Built with Alectryon, running Coq+SerAPI v8.15.0+0.15.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
From Coq Require Import ssreflect ssrfun ssrbool.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.

From Ltac2 Require Import Ltac2 Control.

From Coq Require Import Ensembles Bool String.
From Coq.Logic Require Import FunctionalExtensionality Eqdep_dec.
From Equations Require Import Equations.

Require Import Coq.Program.Tactics.

From MatchingLogic Require Import
    Syntax
    DerivedOperators_Syntax
    ProofSystem
    IndexManipulation
    wftactics
    ProofMode_base
.

New coercion path [Is_true] : bool >-> Sortclass is ambiguous with existing [is_true] : bool >-> Sortclass. [ambiguous-paths,typechecker]
From MatchingLogic.Utils Require Import stdpp_ext. Import extralibrary. Import MatchingLogic.Syntax.Notations MatchingLogic.DerivedOperators_Syntax.Notations MatchingLogic.ProofSystem.Notations . Set Default Proof Mode "Classic". Open Scope string_scope. Open Scope list_scope. Open Scope ml_scope.
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern

well_formed ϕ → well_formed ψ → Γ ⊢i ϕ ---> ψ ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern

well_formed ϕ → well_formed ψ → Γ ⊢i ϕ ---> ψ ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ

Γ ⊢i ϕ ---> ψ ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ

ML_proof_system Γ (ϕ ---> ψ ---> ϕ)
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
ProofInfoMeaning Γ (ϕ ---> ψ ---> ϕ) ?pf BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ

ML_proof_system Γ (ϕ ---> ψ ---> ϕ)
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ

well_formed ϕ
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
well_formed ψ
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ

well_formed ψ
exact wfψ.
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ

ProofInfoMeaning Γ (ϕ ---> ψ ---> ϕ) (P1 Γ ϕ ψ wfϕ wfψ) BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ

ProofInfoMeaning Γ (ϕ ---> ψ ---> ϕ) (P1 Γ ϕ ψ wfϕ wfψ) BasicReasoning
abstract(solve_pim_simple). } Defined.
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern

well_formed ϕ → well_formed ψ → well_formed ξ → Γ ⊢i (ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern

well_formed ϕ → well_formed ψ → well_formed ξ → Γ ⊢i (ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

Γ ⊢i (ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

ML_proof_system Γ ((ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ)
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ
ProofInfoMeaning Γ ((ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ) ?pf BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

ML_proof_system Γ ((ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ)
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

well_formed ϕ
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ
well_formed ψ
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ
well_formed ξ
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

well_formed ψ
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ
well_formed ξ
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

well_formed ξ
exact wfξ.
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

ProofInfoMeaning Γ ((ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ) (P2 Γ ϕ ψ ξ wfϕ wfψ wfξ) BasicReasoning
Σ: Signature
Γ: Theory
ϕ, ψ, ξ: Pattern
wfϕ: well_formed ϕ
wfψ: well_formed ψ
wfξ: well_formed ξ

ProofInfoMeaning Γ ((ϕ ---> ψ ---> ξ) ---> (ϕ ---> ψ) ---> ϕ ---> ξ) (P2 Γ ϕ ψ ξ wfϕ wfψ wfξ) BasicReasoning
abstract (solve_pim_simple). } Defined.
Σ: Signature
Γ: Theory
ϕ: Pattern

well_formed ϕ → Γ ⊢i ((ϕ ---> ⊥) ---> ⊥) ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern

well_formed ϕ → Γ ⊢i ((ϕ ---> ⊥) ---> ⊥) ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ ⊢i ((ϕ ---> ⊥) ---> ⊥) ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

ML_proof_system Γ (((ϕ ---> ⊥) ---> ⊥) ---> ϕ)
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ
ProofInfoMeaning Γ (((ϕ ---> ⊥) ---> ⊥) ---> ϕ) ?pf BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

ML_proof_system Γ (((ϕ ---> ⊥) ---> ⊥) ---> ϕ)
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

well_formed ϕ
exact wfϕ.
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

ProofInfoMeaning Γ (((ϕ ---> ⊥) ---> ⊥) ---> ϕ) (P3 Γ ϕ wfϕ) BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

ProofInfoMeaning Γ (((ϕ ---> ⊥) ---> ⊥) ---> ϕ) (P3 Γ ϕ wfϕ) BasicReasoning
abstract ( solve_pim_simple ). } Defined.
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo

Γ ⊢i ϕ₁ using i → Γ ⊢i ϕ₁ ---> ϕ₂ using i → Γ ⊢i ϕ₂ using i
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo

Γ ⊢i ϕ₁ using i → Γ ⊢i ϕ₁ ---> ϕ₂ using i → Γ ⊢i ϕ₂ using i
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

Γ ⊢i ϕ₂ using i
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ML_proof_system Γ ϕ₂
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i
ProofInfoMeaning Γ ϕ₂ ?pf i
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ML_proof_system Γ ϕ₂
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ML_proof_system Γ ?phi1
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i
ML_proof_system Γ (?phi1 ---> ϕ₂)
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ML_proof_system Γ ?phi1
apply H1.
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ML_proof_system Γ (ϕ₁ ---> ϕ₂)
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ML_proof_system Γ (ϕ₁ ---> ϕ₂)
apply H2. }
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ProofInfoMeaning Γ ϕ₂ (Modus_ponens Γ ϕ₁ ϕ₂ (unkeyed (let (x, H) := H1 in (λ (x0 : ML_proof_system Γ ϕ₁) (_ : ((ProofInfoMeaning Γ ϕ₁)^~ i) x0), x0) x H)) (unkeyed (let (x, H) := H2 in (λ (x0 : ML_proof_system Γ (ϕ₁ ---> ϕ₂)) (_ : ((ProofInfoMeaning Γ (ϕ₁ ---> ϕ₂))^~ i) x0), x0) x H))) i
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
i: ProofInfo
H1: Γ ⊢i ϕ₁ using i
H2: Γ ⊢i ϕ₁ ---> ϕ₂ using i

ProofInfoMeaning Γ ϕ₂ (Modus_ponens Γ ϕ₁ ϕ₂ (unkeyed (let (x, H) := H1 in (λ (x0 : ML_proof_system Γ ϕ₁) (_ : ((ProofInfoMeaning Γ ϕ₁)^~ i) x0), x0) x H)) (unkeyed (let (x, H) := H2 in (λ (x0 : ML_proof_system Γ (ϕ₁ ---> ϕ₂)) (_ : ((ProofInfoMeaning Γ (ϕ₁ ---> ϕ₂))^~ i) x0), x0) x H))) i
abstract( simpl; destruct H1 as [pf1 Hpf1]; destruct H2 as [pf2 Hpf2]; destruct Hpf1,Hpf2; constructor; simpl; [set_solver|set_solver|(destruct (uses_kt pf1),(uses_kt pf2); simpl in *; congruence)|set_solver] ). } Defined.
Σ: Signature
Γ: Theory
axiom: Pattern

well_formed axiom → axiom ∈ Γ → Γ ⊢i axiom using BasicReasoning
Σ: Signature
Γ: Theory
axiom: Pattern

well_formed axiom → axiom ∈ Γ → Γ ⊢i axiom using BasicReasoning
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ

Γ ⊢i axiom using BasicReasoning
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ

ML_proof_system Γ axiom
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ
ProofInfoMeaning Γ axiom ?pf BasicReasoning
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ

ML_proof_system Γ axiom
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ

well_formed axiom
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ
axiom ∈ Γ
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ

axiom ∈ Γ
apply Hin.
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ

ProofInfoMeaning Γ axiom (hypothesis Γ axiom Hwf Hin) BasicReasoning
Σ: Signature
Γ: Theory
axiom: Pattern
Hwf: well_formed axiom
Hin: axiom ∈ Γ

ProofInfoMeaning Γ axiom (hypothesis Γ axiom Hwf Hin) BasicReasoning
abstract ( constructor; simpl; [( set_solver ) |( set_solver ) |( reflexivity ) |( set_solver ) ] ). } Defined. Arguments P1 {Σ} _ (_%ml) (_%ml) _ _ . Arguments P2 {Σ} _ (_%ml) (_%ml) (_%ml) _ _ _. Arguments P3 {Σ} _ (_%ml) _.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
_1:= P2 Γ A (A ---> A) A (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)) (WFA : well_formed A): Γ ⊢i (A ---> (A ---> A) ---> A) ---> (A ---> A ---> A) ---> A ---> A using BasicReasoning

Γ ⊢i A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
_1:= P2 Γ A (A ---> A) A (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)) (WFA : well_formed A): Γ ⊢i (A ---> (A ---> A) ---> A) ---> (A ---> A ---> A) ---> A ---> A using BasicReasoning
_2:= P1 Γ A (A ---> A) (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)): Γ ⊢i A ---> (A ---> A) ---> A using BasicReasoning

Γ ⊢i A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
_1:= P2 Γ A (A ---> A) A (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)) (WFA : well_formed A): Γ ⊢i (A ---> (A ---> A) ---> A) ---> (A ---> A ---> A) ---> A ---> A using BasicReasoning
_2:= P1 Γ A (A ---> A) (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)): Γ ⊢i A ---> (A ---> A) ---> A using BasicReasoning
_3:= MP _2 _1: Γ ⊢i (A ---> A ---> A) ---> A ---> A using BasicReasoning

Γ ⊢i A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
_1:= P2 Γ A (A ---> A) A (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)) (WFA : well_formed A): Γ ⊢i (A ---> (A ---> A) ---> A) ---> (A ---> A ---> A) ---> A ---> A using BasicReasoning
_2:= P1 Γ A (A ---> A) (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)): Γ ⊢i A ---> (A ---> A) ---> A using BasicReasoning
_3:= MP _2 _1: Γ ⊢i (A ---> A ---> A) ---> A ---> A using BasicReasoning
_4:= P1 Γ A A (WFA : well_formed A) (WFA : well_formed A): Γ ⊢i A ---> A ---> A using BasicReasoning

Γ ⊢i A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
_1:= P2 Γ A (A ---> A) A (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)) (WFA : well_formed A): Γ ⊢i (A ---> (A ---> A) ---> A) ---> (A ---> A ---> A) ---> A ---> A using BasicReasoning
_2:= P1 Γ A (A ---> A) (WFA : well_formed A) (well_formed_imp WFA WFA : well_formed (A ---> A)): Γ ⊢i A ---> (A ---> A) ---> A using BasicReasoning
_3:= MP _2 _1: Γ ⊢i (A ---> A ---> A) ---> A ---> A using BasicReasoning
_4:= P1 Γ A A (WFA : well_formed A) (WFA : well_formed A): Γ ⊢i A ---> A ---> A using BasicReasoning
_5:= MP _4 _3: Γ ⊢i A ---> A using BasicReasoning

Γ ⊢i A ---> A using BasicReasoning
exact _5. Defined.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet

ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2) → evs1 ⊆ evs2 ∧ svs1 ⊆ svs2 ∧ kt1 ==> kt2 ∧ fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet

ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2) → evs1 ⊆ evs2 ∧ svs1 ⊆ svs2 ∧ kt1 ==> kt2 ∧ fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

evs1 ⊆ evs2 ∧ svs1 ⊆ svs2 ∧ kt1 ==> kt2 ∧ fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

evs1 ⊆ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
svs1 ⊆ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
kt1 ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

evs1 ⊆ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

evs1 ⊆ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

x : evar, x ∈ evs1 → x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
x: evar
Hx: x ∈ evs1

x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
x: evar
Hx: x ∈ evs1
y: evar
Heqy: y = fresh_evar (patt_free_evar x)

x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
x: evar
Hx: x ∈ evs1
y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning

x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
x: evar
Hx: x ∈ evs1
y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)

x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1
x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (uses_of_ex_gen ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_generalized_evars (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1
gset_to_coGset (uses_of_svar_subst ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_substituted_svars (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1
uses_kt pf2 ==> pi_uses_kt (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1
gset_to_coGset (framing_patterns ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_framing_patterns (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (uses_of_ex_gen ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_generalized_evars (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset ({[x]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ evs1
Σ: Signature
evs1: coEVarSet
x: evar
Hx: x ∈ evs1

gset_to_coGset ({[x]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ evs1
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (uses_of_svar_subst ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_substituted_svars (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1
uses_kt pf2 ==> pi_uses_kt (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1
gset_to_coGset (framing_patterns ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_framing_patterns (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (uses_of_svar_subst ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_substituted_svars (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
svs1: coSVarSet

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

uses_kt pf2 ==> pi_uses_kt (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1
gset_to_coGset (framing_patterns ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_framing_patterns (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

uses_kt pf2 ==> pi_uses_kt (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

true
reflexivity.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (framing_patterns ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_framing_patterns (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (framing_patterns ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_framing_patterns (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
set_solver. }
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
pile: ProofInfoMeaning ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_evar y)): ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x (erefl : well_formed (patt_free_evar y)) (erefl : well_formed (patt_free_evar y)) (`pf1) ((λ (_pattern_value_ : Prop) (_rewrite_rule_ : _pattern_value_ ↔ x = y), [eta subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) _pattern_value_ (x = y)] _rewrite_rule_ (eq_ind_r (λ y : evar, let pf1 := A_impl_A ∅ erefl in x ≠ y) (let pf1 := A_impl_A ∅ erefl in (let e := evar_fresh (elements (free_evars (patt_free_evar x))) in let Heqe : e = evar_fresh (elements (free_evars (patt_free_evar x))) := erefl in let H : e ∉ free_evars (patt_free_evar x) := X_eq_evar_fresh_impl_X_notin_S Heqe in nesym (let _the_hidden_goal_ := e ≠ x in (λ H0 : e ∉ {[x]}, unkeyed (not_elem_of_singleton_1 e x H0)) H)) : x ≠ fresh_evar (patt_free_evar x)) Heqy)) (x ∈ {[y]}) (elem_of_singleton x y) : x ∉ free_evars (patt_free_evar y)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
Hm2: gset_to_coGset (uses_of_ex_gen ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_generalized_evars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hm3: gset_to_coGset (uses_of_svar_subst ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_substituted_svars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hm4: uses_kt pf2 ==> pi_uses_kt (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hm5: gset_to_coGset (framing_patterns ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y) pf2) ⊆ pi_framing_patterns (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hx: x ∈ evs1

x ∈ evs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
x, y: evar
Heqy: y = fresh_evar (patt_free_evar x)
pf1:= A_impl_A ∅ erefl: ∅ ⊢i patt_free_evar y ---> patt_free_evar y using BasicReasoning
pf2:= Ex_gen ∅ (patt_free_evar y) (patt_free_evar y) x erefl erefl (Modus_ponens ∅ (patt_free_evar y ---> patt_free_evar y ---> patt_free_evar y) (patt_free_evar y ---> patt_free_evar y) (ProofSystem.P1 ∅ (patt_free_evar y) (patt_free_evar y) erefl erefl) (Modus_ponens ∅ (patt_free_evar y ---> (patt_free_evar y ---> patt_free_evar y) ---> patt_free_evar y) ((patt_free_evar y ---> patt_free_evar y ---> patt_free_evar y) ---> patt_free_evar y ---> patt_free_evar y) (ProofSystem.P1 ∅ (patt_free_evar y) (patt_free_evar y ---> patt_free_evar y) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ (patt_free_evar y) (patt_free_evar y ---> patt_free_evar y) (patt_free_evar y) erefl (well_formed_imp erefl erefl) erefl))) (subrelation_proper Morphisms_Prop.not_iff_morphism () (subrelation_respectful (subrelation_refl iff) (flip2 iff_flip_impl_subrelation)) (x ∈ {[y]}) (x = y) (elem_of_singleton x y) (eq_ind_r (λ y : evar, x ≠ y) (nesym (not_elem_of_singleton_1 (evar_fresh (elements {[x]})) x (X_eq_evar_fresh_impl_X_notin_S erefl))) Heqy)): ML_proof_system ∅ (exists_quantify x (patt_free_evar y) ---> patt_free_evar y)
Hm2: gset_to_coGset ({[x]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ evs2
Hm3: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
Hm4: true
Hm5: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp2
Hx: x ∈ evs1

x ∈ evs2
Σ: Signature
evs2: coEVarSet
x: evar
Hm2: gset_to_coGset ({[x]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ evs2

x ∈ evs2
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

svs1 ⊆ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
kt1 ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

svs1 ⊆ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

svs1 ⊆ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

x : svar, x ∈ svs1 → x ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
X: svar
HX: X ∈ svs1

X ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
X: svar
HX: X ∈ svs1
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning

X ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
X: svar
HX: X ∈ svs1
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)

X ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

X ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1
X ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1
gset_to_coGset ({[X]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
Σ: Signature
evs1: coEVarSet

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

gset_to_coGset ({[X]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

gset_to_coGset ({[X]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ svs1
Σ: Signature
svs1: coSVarSet
X: svar
HX: X ∈ svs1

gset_to_coGset ({[X]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ svs1
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

true
reflexivity.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
set_solver. }
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
pile: ProofInfoMeaning ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

X ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ (erefl : well_formed (patt_free_svar X)): ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X (erefl : well_formed (patt_free_svar X ---> patt_free_svar X)) (erefl : well_formed ⊥) (`pf1): ML_proof_system ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X)
Hp2: gset_to_coGset (uses_of_ex_gen ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2) ⊆ pi_generalized_evars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp3: gset_to_coGset (uses_of_svar_subst ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2) ⊆ pi_substituted_svars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp4: uses_kt pf2 ==> pi_uses_kt (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_fp: gset_to_coGset (framing_patterns ∅ (free_svar_subst (patt_free_svar X ---> patt_free_svar X) ⊥ X) pf2) ⊆ pi_framing_patterns (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
HX: X ∈ svs1

X ∈ svs2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
X: svar
pf1:= A_impl_A ∅ erefl: ∅ ⊢i patt_free_svar X ---> patt_free_svar X using BasicReasoning
pf2:= Svar_subst ∅ (patt_free_svar X ---> patt_free_svar X) ⊥ X erefl erefl (Modus_ponens ∅ (patt_free_svar X ---> patt_free_svar X ---> patt_free_svar X) (patt_free_svar X ---> patt_free_svar X) (ProofSystem.P1 ∅ (patt_free_svar X) (patt_free_svar X) erefl erefl) (Modus_ponens ∅ (patt_free_svar X ---> (patt_free_svar X ---> patt_free_svar X) ---> patt_free_svar X) ((patt_free_svar X ---> patt_free_svar X ---> patt_free_svar X) ---> patt_free_svar X ---> patt_free_svar X) (ProofSystem.P1 ∅ (patt_free_svar X) (patt_free_svar X ---> patt_free_svar X) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ (patt_free_svar X) (patt_free_svar X ---> patt_free_svar X) (patt_free_svar X) erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ ((if decide (X = X) thenelse patt_free_svar X) ---> (if decide (X = X) thenelse patt_free_svar X))
Hp2: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
Hp3: gset_to_coGset ({[X]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ svs2
Hp4: true
pwi_pf_fp: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp2
HX: X ∈ svs1

X ∈ svs2
Σ: Signature
svs2: coSVarSet
X: svar
Hp3: gset_to_coGset ({[X]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ svs2

X ∈ svs2
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

kt1 ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

kt1 ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

kt1 ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning

kt1 ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)

kt1 ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)

true ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := false, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
false ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := false, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)

false ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := false, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)

true
reflexivity.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)

true ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
true ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
Σ: Signature
evs1: coEVarSet

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
svs1: coSVarSet

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true
reflexivity.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs1, SVSubst := svs1, KT := true, FP := fp1) → ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ fp1
set_solver. }
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
pile: ProofInfoMeaning ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
Hp2: gset_to_coGset (uses_of_ex_gen ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_generalized_evars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp3: gset_to_coGset (uses_of_svar_subst ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_substituted_svars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp4: uses_kt pf2 ==> pi_uses_kt (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_fp: gset_to_coGset (framing_patterns ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_framing_patterns (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
Hp2: gset_to_coGset (uses_of_ex_gen ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_generalized_evars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp3: gset_to_coGset (uses_of_svar_subst ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_substituted_svars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp4: kt2
pwi_pf_fp: gset_to_coGset (framing_patterns ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_framing_patterns (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true ==> kt2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt2: bool
fp1, fp2: coWfpSet
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Knaster_tarski ∅ BoundVarSugar.B0 ⊥ (erefl : well_formed (mu , BoundVarSugar.B0)) (`pf1): ML_proof_system ∅ ((mu , BoundVarSugar.B0) ---> ⊥)
Hp2: gset_to_coGset (uses_of_ex_gen ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_generalized_evars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp3: gset_to_coGset (uses_of_svar_subst ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_substituted_svars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
Hp4: kt2
pwi_pf_fp: gset_to_coGset (framing_patterns ∅ ((mu , BoundVarSugar.B0) ---> ⊥) pf2) ⊆ pi_framing_patterns (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true ==> true
reflexivity.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

fp1 ⊆ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

x : wfPattern, x ∈ fp1 → x ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1

p ↾ wfp ∈ fp2
(*assert (wfp : well_formed p) by admit.*)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
pile: (Γ : Theory) (ϕ : Pattern) (pf : ML_proof_system Γ ϕ), ProofInfoMeaning Γ ϕ pf (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning Γ ϕ pf (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
clear; set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
clear; set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true
reflexivity.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
set_solver. }
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1)
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs1
clear; set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs1
clear; set_solver.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

true
reflexivity.
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) → ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp1
set_solver. }
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pile1: ProofInfoMeaning ∅ (⊥ $ p ---> ⊥ $ p) pf2 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pile2: ProofInfoMeaning ∅ (p $ ⊥ ---> p $ ⊥) pf3 (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ (erefl : well_formed ⊥): ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (`pf1): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pwi_pf_ge: gset_to_coGset (uses_of_ex_gen ∅ (⊥ $ p ---> ⊥ $ p) pf2) ⊆ pi_generalized_evars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_svs: gset_to_coGset (uses_of_svar_subst ∅ (⊥ $ p ---> ⊥ $ p) pf2) ⊆ pi_substituted_svars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_kt: uses_kt pf2 ==> pi_uses_kt (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_fp: gset_to_coGset (framing_patterns ∅ (⊥ $ p ---> ⊥ $ p) pf2) ⊆ pi_framing_patterns (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_ge0: gset_to_coGset (uses_of_ex_gen ∅ (p $ ⊥ ---> p $ ⊥) pf3) ⊆ pi_generalized_evars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_svs0: gset_to_coGset (uses_of_svar_subst ∅ (p $ ⊥ ---> p $ ⊥) pf3) ⊆ pi_substituted_svars (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_kt0: uses_kt pf3 ==> pi_uses_kt (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)
pwi_pf_fp0: gset_to_coGset (framing_patterns ∅ (p $ ⊥ ---> p $ ⊥) pf3) ⊆ pi_framing_patterns (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2)

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ erefl: ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pwi_pf_ge: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt: true
pwi_pf_fp: gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp2
pwi_pf_ge0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt0: true
pwi_pf_fp0: gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp2

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ erefl: ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pwi_pf_ge: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt: true
pwi_pf_fp: gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp2
pwi_pf_ge0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt0: true
pwi_pf_fp0: x : wfPattern, x ∈ gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) → x ∈ fp2

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ erefl: ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pwi_pf_ge: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt: true
pwi_pf_fp: gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp2
pwi_pf_ge0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt0: true
pwi_pf_fp0: x : wfPattern, x ∈ {[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅)) → x ∈ fp2

p ↾ wfp ∈ fp2
Σ: Signature
evs1, evs2: coEVarSet
svs1, svs2: coSVarSet
kt1, kt2: bool
fp1, fp2: coWfpSet
p: Pattern
wfp: well_formed p = true
Hp: p ↾ wfp ∈ fp1
pf1:= A_impl_A ∅ erefl: ∅ ⊢i ⊥ ---> ⊥ using BasicReasoning
pf2:= Framing_left ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (⊥ $ p ---> ⊥ $ p)
pf3:= Framing_right ∅ ⊥ ⊥ p wfp (Modus_ponens ∅ (⊥ ---> ⊥ ---> ⊥) (⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ ⊥ erefl erefl) (Modus_ponens ∅ (⊥ ---> (⊥ ---> ⊥) ---> ⊥) ((⊥ ---> ⊥ ---> ⊥) ---> ⊥ ---> ⊥) (ProofSystem.P1 ∅ ⊥ (⊥ ---> ⊥) erefl (well_formed_imp erefl erefl)) (ProofSystem.P2 ∅ ⊥ (⊥ ---> ⊥) ⊥ erefl (well_formed_imp erefl erefl) erefl))): ML_proof_system ∅ (p $ ⊥ ---> p $ ⊥)
pwi_pf_ge: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt: true
pwi_pf_fp: gset_to_coGset ({[p ↾ wfp]} ∪ (∅ ∪ (∅ ∪ ∅))) ⊆ fp2
pwi_pf_ge0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ evs2
pwi_pf_svs0: gset_to_coGset (∅ ∪ (∅ ∪ ∅)) ⊆ svs2
pwi_pf_kt0: true
pwi_pf_fp0: p ↾ wfp ∈ fp2

p ↾ wfp ∈ fp2
exact pwi_pf_fp0. } Qed.
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
i: ProofInfo

ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) i → Γ ⊢i ϕ using (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
i: ProofInfo

ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) i → Γ ⊢i ϕ using (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
i: ProofInfo
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) i
pf: ML_proof_system Γ ϕ
Hpf: ProofInfoMeaning Γ ϕ pf (ExGen := evs, SVSubst := svs, KT := kt, FP := fp)

Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
i: ProofInfo
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) i
pf: ML_proof_system Γ ϕ
Hpf: ProofInfoMeaning Γ ϕ pf (ExGen := evs, SVSubst := svs, KT := kt, FP := fp)

ProofInfoMeaning Γ ϕ pf i
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
i: ProofInfo
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) i
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ pi_generalized_evars (ExGen := evs, SVSubst := svs, KT := kt, FP := fp)
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ pi_substituted_svars (ExGen := evs, SVSubst := svs, KT := kt, FP := fp)
Hpf4: uses_kt pf ==> pi_uses_kt (ExGen := evs, SVSubst := svs, KT := kt, FP := fp)
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ pi_framing_patterns (ExGen := evs, SVSubst := svs, KT := kt, FP := fp)

ProofInfoMeaning Γ ϕ pf i
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
i: ProofInfo
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) i
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp

ProofInfoMeaning Γ ϕ pf i
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp

ProofInfoMeaning Γ ϕ pf (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Htmp: (evs1 evs2 : coEVarSet) (svs1 svs2 : coSVarSet) (kt1 kt2 : bool) (fp1 fp2 : coWfpSet), ProofInfoLe (ExGen := evs1, SVSubst := svs1, KT := kt1, FP := fp1) (ExGen := evs2, SVSubst := svs2, KT := kt2, FP := fp2) → evs1 ⊆ evs2 ∧ svs1 ⊆ svs2 ∧ kt1 ==> kt2 ∧ fp1 ⊆ fp2

ProofInfoMeaning Γ ϕ pf (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Htmp: evs ⊆ pi_generalized_evars ∧ svs ⊆ pi_substituted_svars ∧ kt ==> pi_uses_kt ∧ fp ⊆ pi_framing_patterns

ProofInfoMeaning Γ ϕ pf (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

ProofInfoMeaning Γ ϕ pf (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ pi_generalized_evars
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns
gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ pi_substituted_svars
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns
uses_kt pf ==> pi_uses_kt
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns
gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ pi_framing_patterns
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ pi_generalized_evars
Σ: Signature
Γ: Theory
ϕ: Pattern
evs, pi_generalized_evars: coEVarSet
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hevs: evs ⊆ pi_generalized_evars

gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ pi_generalized_evars
set_solver.
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ pi_substituted_svars
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns
uses_kt pf ==> pi_uses_kt
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns
gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ pi_framing_patterns
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ pi_substituted_svars
Σ: Signature
Γ: Theory
ϕ: Pattern
svs, pi_substituted_svars: coSVarSet
pf: ML_proof_system Γ ϕ
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hsvs: svs ⊆ pi_substituted_svars

gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ pi_substituted_svars
set_solver.
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

uses_kt pf ==> pi_uses_kt
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns
gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ pi_framing_patterns
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

uses_kt pf ==> pi_uses_kt
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: if uses_kt pf then kt else true
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: if kt then pi_uses_kt else true
Hfp: fp ⊆ pi_framing_patterns

if uses_kt pf then pi_uses_kt else true
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
H: kt = false
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := false, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
H0: uses_kt pf = true
Hpf4: false
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: true
Hfp: fp ⊆ pi_framing_patterns

pi_uses_kt
inversion Hpf4.
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ pi_framing_patterns
Σ: Signature
Γ: Theory
ϕ: Pattern
evs: coEVarSet
svs: coSVarSet
kt: bool
fp: coWfpSet
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
pile: ProofInfoLe (ExGen := evs, SVSubst := svs, KT := kt, FP := fp) (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
pf: ML_proof_system Γ ϕ
Hpf2: gset_to_coGset (uses_of_ex_gen Γ ϕ pf) ⊆ evs
Hpf3: gset_to_coGset (uses_of_svar_subst Γ ϕ pf) ⊆ svs
Hpf4: uses_kt pf ==> kt
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hevs: evs ⊆ pi_generalized_evars
Hsvs: svs ⊆ pi_substituted_svars
Hkt: kt ==> pi_uses_kt
Hfp: fp ⊆ pi_framing_patterns

gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ pi_framing_patterns
Σ: Signature
Γ: Theory
ϕ: Pattern
fp, pi_framing_patterns: coWfpSet
pf: ML_proof_system Γ ϕ
Hpf5: gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ fp
Hfp: fp ⊆ pi_framing_patterns

gset_to_coGset (framing_patterns Γ ϕ pf) ⊆ pi_framing_patterns
set_solver. } Defined.
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo

ProofInfoLe i' i → Γ ⊢i ϕ using i' → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo

ProofInfoLe i' i → Γ ⊢i ϕ using i' → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo
H: ProofInfoLe i' i

Γ ⊢i ϕ using i' → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
i: ProofInfo
H: ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i

Γ ⊢i ϕ using (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
i: ProofInfo
H: ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i

ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i
exact H. Qed.
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i, i': ProofInfo

ProofInfoLe i i' → Γ Ⱶ l-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g using i'
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i, i': ProofInfo

ProofInfoLe i i' → Γ Ⱶ l-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g using i'
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i, i': ProofInfo
pile: ProofInfoLe i i'
H: Γ Ⱶ l-------------------------------------- g using i
wf1: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g using i' ))
wf2: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i' )))

mlTheory (Γ Ⱶ l-------------------------------------- g using i' ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i' )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i' ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i' )
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i, i': ProofInfo
pile: ProofInfoLe i i'
H: mlTheory (Γ Ⱶ l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i )
wf1: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g using i' ))
wf2: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i' )))

mlTheory (Γ Ⱶ l-------------------------------------- g using i' ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i' )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i' ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i' )
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i, i': ProofInfo
pile: ProofInfoLe i i'
H: Γ ⊢i foldr patt_imp g (patterns_of l) using i
wf1: well_formed g
wf2: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp g (patterns_of l) using i'
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
i': ProofInfo
pile: ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i'
H: Γ ⊢i foldr patt_imp g (patterns_of l) using (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
wf1: well_formed g
wf2: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp g (patterns_of l) using i'
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
i': ProofInfo
pile: ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i'
H: Γ ⊢i foldr patt_imp g (patterns_of l) using (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
wf1: well_formed g
wf2: Pattern.wf (patterns_of l)

ProofInfoLe (ExGen := ?evs, SVSubst := ?svs, KT := ?kt, FP := ?fp) i'
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
i': ProofInfo
pile: ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i'
H: Γ ⊢i foldr patt_imp g (patterns_of l) using (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
wf1: well_formed g
wf2: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp g (patterns_of l) using (ExGen := ?evs, SVSubst := ?svs, KT := ?kt, FP := ?fp)
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
i': ProofInfo
pile: ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i'
H: Γ ⊢i foldr patt_imp g (patterns_of l) using (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
wf1: well_formed g
wf2: Pattern.wf (patterns_of l)

ProofInfoLe (ExGen := ?evs, SVSubst := ?svs, KT := ?kt, FP := ?fp) i'
apply pile.
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
pi_generalized_evars: coEVarSet
pi_substituted_svars: coSVarSet
pi_uses_kt: bool
pi_framing_patterns: coWfpSet
i': ProofInfo
pile: ProofInfoLe (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns) i'
H: Γ ⊢i foldr patt_imp g (patterns_of l) using (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
wf1: well_formed g
wf2: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp g (patterns_of l) using (ExGen := pi_generalized_evars, SVSubst := pi_substituted_svars, KT := pi_uses_kt, FP := pi_framing_patterns)
exact H. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H3:= MP H1 H2: Γ ⊢i ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H3:= MP H1 H2: Γ ⊢i ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H4:= P1 Γ (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) (A ---> B) (well_formed_imp (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl)) : well_formed (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)): Γ ⊢i (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H3:= MP H1 H2: Γ ⊢i ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H4:= P1 Γ (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) (A ---> B) (well_formed_imp (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl)) : well_formed (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)): Γ ⊢i (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H5:= MP H3 H4: Γ ⊢i (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H3:= MP H1 H2: Γ ⊢i ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H4:= P1 Γ (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) (A ---> B) (well_formed_imp (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl)) : well_formed (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)): Γ ⊢i (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H5:= MP H3 H4: Γ ⊢i (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H6:= P2 Γ (A ---> B) ((A ---> B ---> ⊥) ---> A ---> B) ((A ---> B ---> ⊥) ---> A ---> ⊥) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB) : well_formed ((A ---> B ---> ⊥) ---> A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl) : well_formed ((A ---> B ---> ⊥) ---> A ---> ⊥)): Γ ⊢i ((A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> ((A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H3:= MP H1 H2: Γ ⊢i ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H4:= P1 Γ (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) (A ---> B) (well_formed_imp (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl)) : well_formed (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)): Γ ⊢i (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H5:= MP H3 H4: Γ ⊢i (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H6:= P2 Γ (A ---> B) ((A ---> B ---> ⊥) ---> A ---> B) ((A ---> B ---> ⊥) ---> A ---> ⊥) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB) : well_formed ((A ---> B ---> ⊥) ---> A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl) : well_formed ((A ---> B ---> ⊥) ---> A ---> ⊥)): Γ ⊢i ((A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> ((A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H7:= MP H5 H6: Γ ⊢i ((A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H3:= MP H1 H2: Γ ⊢i ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H4:= P1 Γ (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) (A ---> B) (well_formed_imp (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl)) : well_formed (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)): Γ ⊢i (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H5:= MP H3 H4: Γ ⊢i (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H6:= P2 Γ (A ---> B) ((A ---> B ---> ⊥) ---> A ---> B) ((A ---> B ---> ⊥) ---> A ---> ⊥) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB) : well_formed ((A ---> B ---> ⊥) ---> A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl) : well_formed ((A ---> B ---> ⊥) ---> A ---> ⊥)): Γ ⊢i ((A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> ((A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H7:= MP H5 H6: Γ ⊢i ((A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H8:= P1 Γ (A ---> B) (A ---> B ---> ⊥) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)): Γ ⊢i (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H1:= P2 Γ A B ⊥ (WFA : well_formed A) (WFB : well_formed B) (erefl : well_formed ⊥): Γ ⊢i (A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥ using BasicReasoning
H2:= P2 Γ (A ---> B ---> ⊥) (A ---> B) (A ---> ⊥) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA erefl : well_formed (A ---> ⊥)): Γ ⊢i ((A ---> B ---> ⊥) ---> (A ---> B) ---> A ---> ⊥) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H3:= MP H1 H2: Γ ⊢i ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H4:= P1 Γ (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) (A ---> B) (well_formed_imp (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl)) : well_formed (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥)) (well_formed_imp WFA WFB : well_formed (A ---> B)): Γ ⊢i (((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H5:= MP H3 H4: Γ ⊢i (A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H6:= P2 Γ (A ---> B) ((A ---> B ---> ⊥) ---> A ---> B) ((A ---> B ---> ⊥) ---> A ---> ⊥) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA WFB) : well_formed ((A ---> B ---> ⊥) ---> A ---> B)) (well_formed_imp (well_formed_imp WFA (well_formed_imp WFB erefl)) (well_formed_imp WFA erefl) : well_formed ((A ---> B ---> ⊥) ---> A ---> ⊥)): Γ ⊢i ((A ---> B) ---> ((A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥) ---> ((A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H7:= MP H5 H6: Γ ⊢i ((A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B) ---> (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning
H8:= P1 Γ (A ---> B) (A ---> B ---> ⊥) (well_formed_imp WFA WFB : well_formed (A ---> B)) (well_formed_imp WFA (well_formed_imp WFB erefl) : well_formed (A ---> B ---> ⊥)): Γ ⊢i (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> B using BasicReasoning
H9:= MP H8 H7: Γ ⊢i (A ---> B) ---> (A ---> B ---> ⊥) ---> A ---> ⊥ using BasicReasoning

Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
exact H9. Defined.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i (A ---> ! A) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i (A ---> ! A) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i (A ---> ! A) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
Γ ⊢i ?ϕ₁ ---> (A ---> ! A) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁ using BasicReasoning
apply (@A_impl_A _ _ A WFA).
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i (A ---> A) ---> (A ---> ! A) ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i (A ---> A) ---> (A ---> ! A) ---> ! A using BasicReasoning
apply (@P4m _ _ A A WFA WFA). } Defined.
Σ: Signature
Γ: Theory
A, B, C: Pattern

well_formed A → well_formed B → well_formed C → Γ ⊢i (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern

well_formed A → well_formed B → well_formed C → Γ ⊢i (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning

Γ ⊢i (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁ ---> (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁0 using BasicReasoning
apply(P1 _ B A ltac:(wf_auto2) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i (B ---> A ---> B) ---> ?ϕ₁ using BasicReasoning
apply(P1 _ (B ---> A ---> B) (A ---> B ---> C) ltac:(wf_auto2) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ((A ---> B ---> C) ---> B ---> A ---> B) ---> (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁ ---> ((A ---> B ---> C) ---> B ---> A ---> B) ---> (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁1 ---> ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁2 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁2 ---> ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁2 using BasicReasoning
apply (@A_impl_A _ _ ABC ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i (ABC ---> ABC) ---> ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁2 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁2 ---> (ABC ---> ABC) ---> ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁2 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁3 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁3 ---> ?ϕ₁2 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁3 using BasicReasoning
apply(P2 _ A B C ltac:(wf_auto2) ltac:(wf_auto2) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ((A ---> B ---> C) ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁2 using BasicReasoning
unshelve (eapply(P1 _ _ (A ---> B ---> C) _ _)); wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ((A ---> B ---> C) ---> (A ---> B ---> C) ---> (A ---> B) ---> A ---> C) ---> (ABC ---> ABC) ---> ?ϕ₁1 using BasicReasoning
apply P2; wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i (ABC ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁1 ---> (ABC ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁1 using BasicReasoning
apply t1.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ((A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) ---> (ABC ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁0 using BasicReasoning
apply(P2 _ ABC ((A ---> B) ---> (A ---> C)) (B ---> (A ---> B) ---> (A ---> C)) ltac:(wf_auto2) ltac:(wf_auto2) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i (ABC ---> B ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁0 ---> (ABC ---> B ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern
Γ ⊢i ?ϕ₁1 ---> ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ?ϕ₁1 using BasicReasoning
apply(P2 _ B (A ---> B) (A ---> C) ltac:(wf_auto2) ltac:(wf_auto2) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i ((B ---> (A ---> B) ---> A ---> C) ---> (B ---> A ---> B) ---> B ---> A ---> C) ---> ?ϕ₁0 using BasicReasoning
apply(P1 _ _ ABC); wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i (ABC ---> (B ---> (A ---> B) ---> A ---> C) ---> (B ---> A ---> B) ---> B ---> A ---> C) ---> (ABC ---> B ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁ using BasicReasoning
apply P2; wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
t1:= MP (P1 Γ ((A ---> B) ---> A ---> C) B (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC) : well_formed ((A ---> B) ---> A ---> C)) (WFB : well_formed B)) (P1 Γ (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C) (A ---> B ---> C) (well_formed_imp (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC)) (well_formed_imp WFB (well_formed_imp (well_formed_imp WFA WFB) (well_formed_imp WFA WFC))) : well_formed (((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C)) (well_formed_imp WFA (well_formed_imp WFB WFC) : well_formed (A ---> B ---> C))): Γ ⊢i (A ---> B ---> C) ---> ((A ---> B) ---> A ---> C) ---> B ---> (A ---> B) ---> A ---> C using BasicReasoning
ABC:= A ---> B ---> C: Pattern

Γ ⊢i (ABC ---> (B ---> A ---> B) ---> B ---> A ---> C) ---> ((A ---> B ---> C) ---> B ---> A ---> B) ---> (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
apply P2; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A ---> B ---> C using i → Γ ⊢i B ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A ---> B ---> C using i → Γ ⊢i B ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B ---> C using i

Γ ⊢i B ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B ---> C using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B ---> C using i
Γ ⊢i ?ϕ₁ ---> B ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B ---> C using i

Γ ⊢i (A ---> B ---> C) ---> B ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B ---> C using i

Γ ⊢i (A ---> B ---> C) ---> B ---> A ---> C using BasicReasoning
apply reorder; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B, C: Pattern

well_formed A → well_formed B → well_formed C → Γ ⊢i (A ---> B) ---> (B ---> C) ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern

well_formed A → well_formed B → well_formed C → Γ ⊢i (A ---> B) ---> (B ---> C) ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i (A ---> B) ---> (B ---> C) ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i (B ---> C) ---> (A ---> B) ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
Γ ⊢i ?ϕ₁ ---> (B ---> C) ---> (A ---> B) ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ?ϕ₁ using BasicReasoning
apply(P1 _ (B ---> C) A); wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ((B ---> C) ---> A ---> B ---> C) ---> (B ---> C) ---> (A ---> B) ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
Γ ⊢i ?ϕ₁ ---> ((B ---> C) ---> A ---> B ---> C) ---> (B ---> C) ---> (A ---> B) ---> A ---> C using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ?ϕ₁0 using BasicReasoning
apply (P2 _ A B C); wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ((A ---> B ---> C) ---> (A ---> B) ---> A ---> C) ---> ?ϕ₁ using BasicReasoning
apply (P1 _ ((A ---> B ---> C) ---> (A ---> B) ---> A ---> C) (B ---> C)); wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C

Γ ⊢i ((B ---> C) ---> (A ---> B ---> C) ---> (A ---> B) ---> A ---> C) ---> ((B ---> C) ---> A ---> B ---> C) ---> (B ---> C) ---> (A ---> B) ---> A ---> C using BasicReasoning
apply P2; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A ---> B using i → Γ ⊢i B ---> C using i → Γ ⊢i A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A ---> B using i → Γ ⊢i B ---> C using i → Γ ⊢i A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i
Γ ⊢i ?ϕ₁ ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i ?ϕ₁ using i
exact H2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i (A ---> B) ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i
Γ ⊢i ?ϕ₁ ---> (A ---> B) ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i ?ϕ₁ using i
exact H3.
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i (B ---> C) ---> (A ---> B) ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i (A ---> B) ---> (B ---> C) ---> A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
H: well_formed A
H0: well_formed B
H1: well_formed C
H2: Γ ⊢i A ---> B using i
H3: Γ ⊢i B ---> C using i

Γ ⊢i (A ---> B) ---> (B ---> C) ---> A ---> C using BasicReasoning
apply syllogism; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> (A ---> B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> (A ---> B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A ---> (A ---> B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ?ϕ₁ ---> A ---> (A ---> B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ?ϕ₁ using BasicReasoning
apply (P1 _ A (A ---> B) ltac:(wf_auto2) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (A ---> (A ---> B) ---> A) ---> A ---> (A ---> B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ?ϕ₁ ---> (A ---> (A ---> B) ---> A) ---> A ---> (A ---> B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ?ϕ₁0 using BasicReasoning
apply (@A_impl_A _ _ (A ---> B) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ((A ---> B) ---> A ---> B) ---> ?ϕ₁ using BasicReasoning
eapply (P2 _ (A ---> B) A B ltac:(wf_auto2) ltac:(wf_auto2) ltac:(wf_auto2)).
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (((A ---> B) ---> A) ---> (A ---> B) ---> B) ---> (A ---> (A ---> B) ---> A) ---> A ---> (A ---> B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (A ---> (A ---> B) ---> A) ---> (((A ---> B) ---> A) ---> (A ---> B) ---> B) ---> A ---> (A ---> B) ---> B using BasicReasoning
apply syllogism; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i A ---> ! ! A using BasicReasoning
apply modus_ponens; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m2: Γ ⊢i B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m2: Γ ⊢i B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m3: Γ ⊢i (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m2: Γ ⊢i B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m3: Γ ⊢i (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m4: Γ ⊢i ((B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m2: Γ ⊢i B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m3: Γ ⊢i (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m4: Γ ⊢i ((B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m5: Γ ⊢i ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m2: Γ ⊢i B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m3: Γ ⊢i (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m4: Γ ⊢i ((B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m5: Γ ⊢i ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m6: Γ ⊢i (((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> (((A ---> ⊥) ---> B ---> ⊥) ---> B ---> (A ---> ⊥) ---> ⊥) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> B ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m2: Γ ⊢i B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m3: Γ ⊢i (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m4: Γ ⊢i ((B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m5: Γ ⊢i ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m6: Γ ⊢i (((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> (((A ---> ⊥) ---> B ---> ⊥) ---> B ---> (A ---> ⊥) ---> ⊥) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> B ---> A using BasicReasoning
m7: Γ ⊢i (((A ---> ⊥) ---> B ---> ⊥) ---> B ---> (A ---> ⊥) ---> ⊥) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> B ---> A using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m0: Γ ⊢i (((A ---> ⊥) ---> ⊥) ---> A) ---> B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m1: Γ ⊢i (B ---> ((A ---> ⊥) ---> ⊥) ---> A) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m2: Γ ⊢i B ---> ((A ---> ⊥) ---> ⊥) ---> A using BasicReasoning
m3: Γ ⊢i (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m4: Γ ⊢i ((B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m5: Γ ⊢i ((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A using BasicReasoning
m6: Γ ⊢i (((A ---> ⊥) ---> B ---> ⊥) ---> (B ---> (A ---> ⊥) ---> ⊥) ---> B ---> A) ---> (((A ---> ⊥) ---> B ---> ⊥) ---> B ---> (A ---> ⊥) ---> ⊥) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> B ---> A using BasicReasoning
m7: Γ ⊢i (((A ---> ⊥) ---> B ---> ⊥) ---> B ---> (A ---> ⊥) ---> ⊥) ---> ((A ---> ⊥) ---> B ---> ⊥) ---> B ---> A using BasicReasoning
m8: Γ ⊢i ((A ---> ⊥) ---> B ---> ⊥) ---> B ---> (A ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i (! A ---> ! B) ---> B ---> A using BasicReasoning
apply (MP m8 m7). Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: ?Γ0 ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: ?Γ0 ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ?Γ1 ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ?Γ0 ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t6: Γ ⊢i A ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t6: Γ ⊢i A ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t7: Γ ⊢i A ---> B ---> ! (! ! A ---> ! B) using BasicReasoning

Γ ⊢i A ---> B ---> A and B using BasicReasoning
apply t7.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning

well_formed (((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
well_formed (! ! A ---> ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
well_formed (B ---> (! ! A ---> ! B) ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
well_formed (! ! A ---> ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
well_formed (A ---> (! ! A ---> ! B) ---> A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed ((! ! A ---> ! B) ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
well_formed ((! ! A ---> ! B) ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
well_formed (((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B))
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
well_formed (B ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
well_formed ((! ! A ---> ! B) ---> A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed ((B ---> A) ---> B ---> (! ! A ---> ! B) ---> A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed ((! ! A ---> ! B) ---> A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed (! (! ! A ---> ! B))
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
well_formed ((B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B))
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
well_formed (B ---> A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
well_formed (B ---> (! ! A ---> ! B) ---> A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t6: Γ ⊢i A ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t6: Γ ⊢i A ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed (B ---> (! ! A ---> ! B) ---> A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
tB: Γ ⊢i B ---> B using BasicReasoning
t1: Γ ⊢i B ---> ((! ! A ---> ! B) ---> A ---> ⊥) ---> ((! ! A ---> ! B) ---> A) ---> (! ! A ---> ! B) ---> ⊥ using BasicReasoning
t2: Γ ⊢i B ---> B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t3'': Γ ⊢i B ---> A ---> (! ! A ---> ! B) ---> A using BasicReasoning
t4: Γ ⊢i B ---> (! ! A ---> ! B) ---> ! A using BasicReasoning
t5'': Γ ⊢i B ---> ((! ! A ---> ! B) ---> A) ---> ! (! ! A ---> ! B) using BasicReasoning
tA: Γ ⊢i A ---> B ---> A using BasicReasoning
tB': Γ ⊢i A ---> B ---> B using BasicReasoning
t3': Γ ⊢i (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t3: Γ ⊢i A ---> (B ---> A) ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
t5': Γ ⊢i (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t5: Γ ⊢i A ---> (B ---> (! ! A ---> ! B) ---> A) ---> B ---> ! (! ! A ---> ! B) using BasicReasoning
t6: Γ ⊢i A ---> B ---> (! ! A ---> ! B) ---> A using BasicReasoning
well_formed (B ---> ! (! ! A ---> ! B))
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i B using i → Γ ⊢i A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i B using i → Γ ⊢i A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i
Γ ⊢i ?ϕ₁ ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i ?ϕ₁ using i
exact H0.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i
Γ ⊢i ?ϕ₁ ---> B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i ?ϕ₁ using i
exact H.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i A ---> B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
H0: Γ ⊢i B using i

Γ ⊢i A ---> B ---> A and B using BasicReasoning
apply conj_intro; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → well_formed D → Γ ⊢i A ---> B ---> C using i → Γ ⊢i C ---> D using i → Γ ⊢i A ---> B ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → well_formed D → Γ ⊢i A ---> B ---> C using i → Γ ⊢i C ---> D using i → Γ ⊢i A ---> B ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i A ---> B ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
Γ ⊢i ?ϕ₁ ---> A ---> B ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁ using i
exact H.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i (A ---> B ---> C) ---> A ---> B ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
Γ ⊢i ?ϕ₁ ---> (A ---> B ---> C) ---> A ---> B ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁0 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁0 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁1 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
Γ ⊢i ?ϕ₁1 ---> ?ϕ₁0 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁1 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁2 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
Γ ⊢i ?ϕ₁2 ---> ?ϕ₁1 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ?ϕ₁2 using i
exact H0.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i (C ---> D) ---> ?ϕ₁1 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i (C ---> D) ---> ?ϕ₁1 using BasicReasoning
eapply (P1 _ (C ---> D) B _ _).
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i (B ---> C ---> D) ---> ?ϕ₁0 using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i (B ---> C ---> D) ---> ?ϕ₁0 using BasicReasoning
eapply (P2 _ B C D _ _ _).
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ((B ---> C) ---> B ---> D) ---> ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i ((B ---> C) ---> B ---> D) ---> ?ϕ₁ using BasicReasoning
eapply (P1 _ ((B ---> C) ---> B ---> D) A _ _).
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i (A ---> (B ---> C) ---> B ---> D) ---> (A ---> B ---> C) ---> A ---> B ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i (A ---> (B ---> C) ---> B ---> D) ---> (A ---> B ---> C) ---> A ---> B ---> D using BasicReasoning
eapply (P2 _ A (B ---> C) (B ---> D) _ _ _).
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i

well_formed (C ---> D)
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed B
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed B
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed C
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed D
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed ((B ---> C) ---> B ---> D)
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed A
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed A
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed (B ---> C)
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B ---> C using i
H0: Γ ⊢i C ---> D using i
well_formed (B ---> D)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i ⊥ ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i ⊥ ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ⊥ ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
Γ ⊢i ?ϕ₁ ---> ⊥ ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
Γ ⊢i ?ϕ₁1 ---> ?ϕ₁0 using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁2 using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
Γ ⊢i ?ϕ₁2 ---> ?ϕ₁1 using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ?ϕ₁2 using BasicReasoning
eapply (P1 _ Bot Bot _ _).
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i (⊥ ---> ⊥ ---> ⊥) ---> ?ϕ₁1 using BasicReasoning
eapply (P2 _ Bot Bot Bot _ _ _).
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ((⊥ ---> ⊥) ---> ⊥ ---> ⊥) ---> ?ϕ₁0 using BasicReasoning
eapply (@P4 _ _ Bot Bot _ _).
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i (⊥ ---> ⊥) ---> ?ϕ₁ using BasicReasoning
eapply (P1 _ (Bot ---> Bot) (A ---> Bot) _ _).
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ((A ---> ⊥) ---> ⊥ ---> ⊥) ---> ⊥ ---> A using BasicReasoning
eapply (@P4 _ _ A Bot _ _).
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

well_formed ⊥
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed ⊥
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed ⊥
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed ⊥
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed ⊥
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed ⊥
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed ⊥
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed (⊥ ---> ⊥)
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed (A ---> ⊥)
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A
well_formed ⊥
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> (! B ---> ! A) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> (! B ---> ! A) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A ---> (! B ---> ! A) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (! B ---> ! A) ---> A ---> B using BasicReasoning
apply P4; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i B ---> A or B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i B ---> A or B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i B ---> A or B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i B ---> A or B using BasicReasoning
apply P1; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> A or B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> A or B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A ---> A or B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed ?C
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i A ---> ! A ---> ?C using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ?C ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A ---> ! A ---> ?C using BasicReasoning
apply modus_ponens; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed ⊥
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ⊥ ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ⊥ ---> B using BasicReasoning
apply bot_elim; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed ⊥
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i B using i → Γ ⊢i A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i B using i → Γ ⊢i A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HB: Γ ⊢i B using i

Γ ⊢i A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HB: Γ ⊢i B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HB: Γ ⊢i B using i
Γ ⊢i ?ϕ₁ ---> A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HB: Γ ⊢i B using i

Γ ⊢i ?ϕ₁ using i
exact HB.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HB: Γ ⊢i B using i

Γ ⊢i B ---> A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HB: Γ ⊢i B using i

Γ ⊢i B ---> A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HB: Γ ⊢i B using i

Γ ⊢i B ---> A or B using BasicReasoning
apply disj_right_intro; wf_auto2. } Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HA: Γ ⊢i A using i

Γ ⊢i A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HA: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HA: Γ ⊢i A using i
Γ ⊢i ?ϕ₁ ---> A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HA: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
exact HA.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HA: Γ ⊢i A using i

Γ ⊢i A ---> A or B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
HwfA: well_formed A
HwfB: well_formed B
HA: Γ ⊢i A using i

Γ ⊢i A ---> A or B using BasicReasoning
apply disj_left_intro; assumption. Defined.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

well_formed A
exact WFA. Defined.
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo

well_formed A → Γ ⊢i ! ! A using i → Γ ⊢i A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo

well_formed A → Γ ⊢i ! ! A using i → Γ ⊢i A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i

Γ ⊢i A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i
Γ ⊢i ?ϕ₁ ---> A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i

Γ ⊢i ?ϕ₁ using i
apply nnA.
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i

Γ ⊢i ! ! A ---> A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i

Γ ⊢i ! ! A ---> A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i

Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
wfA: well_formed A
nnA: Γ ⊢i ! ! A using i

well_formed A
exact wfA. } Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (! ! A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (! ! A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (! ! A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! ! A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed ?B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i (! ! A ---> ! ! B) ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ?B ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! ! A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! B ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! ! A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! B ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed A
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i ! ! A ---> ! ! B using i → Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i ! ! A ---> ! ! B using i → Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! ! A ---> ! ! B using i

Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! ! A ---> ! ! B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! ! A ---> ! ! B using i
Γ ⊢i ?ϕ₁ ---> A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! ! A ---> ! ! B using i

Γ ⊢i ?ϕ₁ using i
exact H.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! ! A ---> ! ! B using i

Γ ⊢i (! ! A ---> ! ! B) ---> A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! ! A ---> ! ! B using i

Γ ⊢i (! ! A ---> ! ! B) ---> A ---> B using BasicReasoning
apply double_neg_elim; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
well_formed (! ! A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
well_formed (! ! A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

well_formed (A ---> B)
shelve.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

well_formed (! ! A ---> B)
shelve.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

well_formed (! ! A ---> ! ! B)
shelve.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
assumption.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning

Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
assumption.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
well_formed (B ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
well_formed (! ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
well_formed (! ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
well_formed (! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
well_formed (! ! A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
S1:= syllogism Γ ?Goal ?Goal0 ?Goal1: Γ ⊢i (! ! A ---> A) ---> (A ---> B) ---> ! ! A ---> B using BasicReasoning
MP1:= MP (not_not_elim Γ ?Goal2) S1: Γ ⊢i (A ---> B) ---> ! ! A ---> B using BasicReasoning
NNB:= not_not_intro Γ ?Goal3: Γ ⊢i B ---> ! ! B using BasicReasoning
P1:= ProofMode_propositional.P1 Γ (B ---> ! ! B) (! ! A) ?Goal4 ?Goal5: Γ ⊢i (B ---> ! ! B) ---> ! ! A ---> B ---> ! ! B using BasicReasoning
MP2:= MP NNB P1: Γ ⊢i ! ! A ---> B ---> ! ! B using BasicReasoning
P2':= P2 Γ (! ! A) B (! ! B) ?Goal6 ?Goal7 ?Goal8: Γ ⊢i (! ! A ---> B ---> ! ! B) ---> (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
MP3:= MP MP2 P2': Γ ⊢i (! ! A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
well_formed (! ! A ---> ! ! B)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> B) ---> ! B ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> B) ---> ! B ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (A ---> B) ---> ! B ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning

Γ ⊢i (A ---> B) ---> ! B ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning

well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
well_formed (! ! A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
well_formed (! B ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning

well_formed (A ---> B)
shelve.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning

well_formed (! ! A ---> ! ! B)
shelve.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning

well_formed (! B ---> ! A)
shelve.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning

Γ ⊢i (A ---> B) ---> ! ! A ---> ! ! B using BasicReasoning
apply @not_not_impl_intro; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning

Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
exact m. (* apply (P4 _ _ _). shelve. shelve. *)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
well_formed (! ! A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
m: Γ ⊢i (! ! A ---> ! ! B) ---> ! B ---> ! A using BasicReasoning
well_formed (! B ---> ! A)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A or B using i → Γ ⊢i B or A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A or B using i → Γ ⊢i B or A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A or B using i

Γ ⊢i B or A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i

Γ ⊢i ! B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using BasicReasoning

Γ ⊢i ! B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using BasicReasoning
NNI: Γ ⊢i B ---> ! ! B using BasicReasoning

Γ ⊢i ! B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using BasicReasoning

Γ ⊢i ! B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i

Γ ⊢i ! B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
SI: Γ ⊢i ! A ---> ! ! B using i

Γ ⊢i ! B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
SI: Γ ⊢i ! A ---> ! ! B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
SI: Γ ⊢i ! A ---> ! ! B using i
Γ ⊢i ?ϕ₁ ---> ! B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
SI: Γ ⊢i ! A ---> ! ! B using i

Γ ⊢i ?ϕ₁ using i
exact SI.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
SI: Γ ⊢i ! A ---> ! ! B using i

Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
exact P4.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using BasicReasoning
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> B using i
P4: Γ ⊢i (! A ---> ! ! B) ---> ! B ---> A using i
NNI: Γ ⊢i B ---> ! ! B using i
well_formed (! ! B)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo

well_formed A → Γ ⊢i A using i → Γ ⊢i ! ! A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo

well_formed A → Γ ⊢i A using i → Γ ⊢i ! ! A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i ! ! A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i
Γ ⊢i ?ϕ₁ ---> (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i A ---> (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i A ---> (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i A ---> (A ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

well_formed A
exact WFA. } Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i ! A ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i ! A ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! A ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed ?B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ! A ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ?B ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! B ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i ! A ---> ! B ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! B ---> ! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed A
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
phi: Pattern

well_formed phi → Γ ⊢i ⊥ ---> phi using BasicReasoning
Σ: Signature
Γ: Theory
phi: Pattern

well_formed phi → Γ ⊢i ⊥ ---> phi using BasicReasoning
apply bot_elim. Defined.
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo

well_formed A → Γ ⊢i A using i → Γ ⊢i ! ! A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo

well_formed A → Γ ⊢i A using i → Γ ⊢i ! ! A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i ! ! A using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i
Γ ⊢i ?ϕ₁ ---> (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i A ---> (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i A ---> (A ---> ⊥) ---> ⊥ using i
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

Γ ⊢i A ---> (A ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: Γ ⊢i A using i

well_formed A
exact WFA. } Defined.
Σ: Signature
G: Theory
A: Pattern
i: ProofInfo

well_formed A → G ⊢i A using i → G ⊢i A ---> ⊥ using i → G ⊢i ⊥ using i
Σ: Signature
G: Theory
A: Pattern
i: ProofInfo

well_formed A → G ⊢i A using i → G ⊢i A ---> ⊥ using i → G ⊢i ⊥ using i
Σ: Signature
G: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: G ⊢i A using i
H0: G ⊢i A ---> ⊥ using i

G ⊢i ⊥ using i
Σ: Signature
G: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: G ⊢i A using i
H0: G ⊢i A ---> ⊥ using i

G ⊢i ?ϕ₁ using i
Σ: Signature
G: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: G ⊢i A using i
H0: G ⊢i A ---> ⊥ using i
G ⊢i ?ϕ₁ ---> ⊥ using i
Σ: Signature
G: Theory
A: Pattern
i: ProofInfo
WFA: well_formed A
H: G ⊢i A using i
H0: G ⊢i A ---> ⊥ using i

G ⊢i A ---> ⊥ using i
apply H0. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

Γ ⊢i A ---> B using i → Γ ⊢i ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

Γ ⊢i A ---> B using i → Γ ⊢i ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i

Γ ⊢i ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)

Γ ⊢i ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)
wfA: well_formed A

Γ ⊢i ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)
wfA: well_formed A
wfB: well_formed B

Γ ⊢i ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)
wfA: well_formed A
wfB: well_formed B

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)
wfA: well_formed A
wfB: well_formed B
Γ ⊢i ?ϕ₁ ---> ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)
wfA: well_formed A
wfB: well_formed B

Γ ⊢i ?ϕ₁ ---> ! B ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)
wfA: well_formed A
wfB: well_formed B

Γ ⊢i ?ϕ₁ ---> ! B ---> ! A using BasicReasoning
apply contraposition; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
H: Γ ⊢i A ---> B using i
wf: well_formed (A ---> B)
wfA: well_formed A
wfB: well_formed B

Γ ⊢i A ---> B using i
apply H. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! ! B ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
Γ ⊢i (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! ! B ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed B
wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning

Γ ⊢i (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning

Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
Γ ⊢i (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning

Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
apply syllogism; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning

Γ ⊢i (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
Γ ⊢i ?ϕ₁ ---> (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning

Γ ⊢i ?ϕ₁ ---> (A ---> ! ! B) ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning

well_formed (A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
well_formed ?ϕ₁
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
Γ ⊢i (A ---> ! ! B) ---> ?ϕ₁ ---> A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning

well_formed (A ---> ! ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
well_formed (! ! B ---> B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning
well_formed (A ---> B)
all: wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H0: Γ ⊢i ! ! B ---> B using BasicReasoning
H1: Γ ⊢i (A ---> ! ! B) ---> (! ! B ---> B) ---> A ---> B using BasicReasoning

Γ ⊢i ! ! B ---> B using BasicReasoning
apply H0. Defined.
Σ: Signature
Γ: Theory
A, B, B': Pattern

well_formed A → well_formed B → well_formed B' → Γ ⊢i (B ---> B') ---> (A ---> B) ---> A ---> B' using BasicReasoning
Σ: Signature
Γ: Theory
A, B, B': Pattern

well_formed A → well_formed B → well_formed B' → Γ ⊢i (B ---> B') ---> (A ---> B) ---> A ---> B' using BasicReasoning
Σ: Signature
Γ: Theory
A, B, B': Pattern
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'

Γ ⊢i (B ---> B') ---> (A ---> B) ---> A ---> B' using BasicReasoning
Σ: Signature
Γ: Theory
A, B, B': Pattern
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'

Γ ⊢i (A ---> B) ---> (B ---> B') ---> A ---> B' using BasicReasoning
apply syllogism; wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed B' → Γ ⊢i B ---> B' using i → Γ ⊢i (A ---> B) ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed B' → Γ ⊢i B ---> B' using i → Γ ⊢i (A ---> B) ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i

Γ ⊢i (A ---> B) ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i

Γ ⊢i (A ---> B) ---> (B ---> B') ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i
H1: Γ ⊢i (A ---> B) ---> (B ---> B') ---> A ---> B' using i
Γ ⊢i (A ---> B) ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i

Γ ⊢i (A ---> B) ---> (B ---> B') ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i

Γ ⊢i (A ---> B) ---> (B ---> B') ---> A ---> B' using BasicReasoning
apply syllogism; wf_auto2.
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i
H1: Γ ⊢i (A ---> B) ---> (B ---> B') ---> A ---> B' using i

Γ ⊢i (A ---> B) ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i
H1: Γ ⊢i (B ---> B') ---> (A ---> B) ---> A ---> B' using i

Γ ⊢i (A ---> B) ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i
H1: Γ ⊢i (B ---> B') ---> (A ---> B) ---> A ---> B' using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i
H1: Γ ⊢i (B ---> B') ---> (A ---> B) ---> A ---> B' using i
Γ ⊢i ?ϕ₁ ---> (A ---> B) ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfB': well_formed B'
BimpB': Γ ⊢i B ---> B' using i
H1: Γ ⊢i (B ---> B') ---> (A ---> B) ---> A ---> B' using i

Γ ⊢i B ---> B' using i
apply BimpB'. Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
g, g': Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i (g ---> g') ---> foldr patt_imp g [] ---> foldr patt_imp g' [] using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
g, g': Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i (g ---> g') ---> foldr patt_imp g [] ---> foldr patt_imp g' [] using BasicReasoning
Σ: Signature
Γ: Theory
g, g': Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfg': well_formed g'

well_formed (foldr patt_imp g [] ---> foldr patt_imp g' [])
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfl: well_formed a = true ∧ (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfl: well_formed a = true ∧ (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) (map well_formed l) = true
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) (map well_formed l) = true
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
(* I do not know how to fold it, so I just assert & clear. *)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) (map well_formed l) = true
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Pattern.wf l → Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l

Γ ⊢i (g ---> g') ---> foldr patt_imp g (a :: l) ---> foldr patt_imp g' (a :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l

Γ ⊢i (g ---> g') ---> (a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l

well_formed (g ---> g')
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed ?B
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed ((a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g' l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
Γ ⊢i (g ---> g') ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
Γ ⊢i ?B ---> (a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l

well_formed (g ---> g')
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed (foldr patt_imp g l ---> foldr patt_imp g' l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed ((a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g' l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed a
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed (foldr patt_imp g l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed (foldr patt_imp g' l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l

well_formed (g ---> g')
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed (foldr patt_imp g l ---> foldr patt_imp g' l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed ((a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g' l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed a
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed (foldr patt_imp g l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfg: well_formed g
wfg': well_formed g'
IHl: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
wfl': Pattern.wf (a :: l)
wfl'': Pattern.wf l
well_formed (foldr patt_imp g' l)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i g ---> g' using i → Γ ⊢i foldr patt_imp g l ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i g ---> g' using i → Γ ⊢i foldr patt_imp g l ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i

Γ ⊢i foldr patt_imp g l ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g l ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g l ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
apply prf_weaken_conclusion_iter; wf_auto2.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i

Γ ⊢i g ---> g' using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i

Γ ⊢i g ---> g' using i
apply gimpg'. } Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i g ---> g' using i → Γ ⊢i foldr patt_imp g l using i → Γ ⊢i foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i g ---> g' using i → Γ ⊢i foldr patt_imp g l using i → Γ ⊢i foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i ?ϕ₁ using i
apply gimpg'.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i
Γ ⊢i ?ϕ₁ ---> (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i foldr patt_imp g l ---> (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i

Pattern.wf l
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i
well_formed g
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
gimpg': Γ ⊢i g ---> g' using i
H: Γ ⊢i foldr patt_imp g l using i
well_formed g'
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed B' → Γ ⊢i B ---> B' using i → Γ ⊢i A ---> B using i → Γ ⊢i A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed B' → Γ ⊢i B ---> B' using i → Γ ⊢i A ---> B using i → Γ ⊢i A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i

Γ ⊢i A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
Γ ⊢i ?ϕ₁ ---> A ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i

Γ ⊢i A ---> ?B using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
well_formed A
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
well_formed ?B
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
well_formed B'
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
Γ ⊢i ?B ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i

well_formed A
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
well_formed B
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
well_formed B'
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
Γ ⊢i B ---> B' using i
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i

well_formed A
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
well_formed B
Σ: Signature
Γ: Theory
A, B, B': Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFB': well_formed B'
H: Γ ⊢i B ---> B' using i
H0: Γ ⊢i A ---> B using i
well_formed B'
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, A', B: Pattern

well_formed A → well_formed A' → well_formed B → Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, A', B: Pattern

well_formed A → well_formed A' → well_formed B → Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, A', B: Pattern
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B

Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using BasicReasoning
apply syllogism; wf_auto2. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern

Pattern.wf l₁ → Pattern.wf l₂ → well_formed h → well_formed h' → well_formed g → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern

Pattern.wf l₁ → Pattern.wf l₂ → well_formed h → well_formed h' → well_formed g → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g

Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ([] ++ h :: l₂) ---> foldr patt_imp g ([] ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ([] ++ h :: l₂) ---> foldr patt_imp g ([] ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g

Γ ⊢i (h' ---> h) ---> (h ---> foldr patt_imp g l₂) ---> h' ---> foldr patt_imp g l₂ using BasicReasoning
Σ: Signature
Γ: Theory
l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g

well_formed h
Σ: Signature
Γ: Theory
l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
well_formed h'
Σ: Signature
Γ: Theory
l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
well_formed (foldr patt_imp g l₂)
all: wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: foldr andb true (map well_formed (a :: l₁))
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: well_formed a && foldr andb true (map well_formed l₁)
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfl₁: well_formed a = true ∧ foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Pattern.wf l₁ → Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
b: Pattern
Heqb: b = foldr patt_imp g (l₁ ++ h :: l₂)
IHl₁: Γ ⊢i (h' ---> h) ---> b ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
b: Pattern
Heqb: b = foldr patt_imp g (l₁ ++ h :: l₂)
b': Pattern
Heqb': b' = foldr patt_imp g (l₁ ++ h' :: l₂)
IHl₁: Γ ⊢i (h' ---> h) ---> b ---> b' using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
b: Pattern
Heqb: b = foldr patt_imp g (l₁ ++ h :: l₂)
b': Pattern
Heqb': b' = foldr patt_imp g (l₁ ++ h' :: l₂)
IHl₁: Γ ⊢i (h' ---> h) ---> b ---> b' using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (b ---> b') ---> (a ---> b) ---> a ---> b' using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
b: Pattern
Heqb: b = foldr patt_imp g (l₁ ++ h :: l₂)
b': Pattern
Heqb': b' = foldr patt_imp g (l₁ ++ h' :: l₂)
IHl₁: Γ ⊢i (h' ---> h) ---> b ---> b' using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)
prf: Γ ⊢i (b ---> b') ---> (a ---> b) ---> a ---> b' using BasicReasoning
Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
b: Pattern
Heqb: b = foldr patt_imp g (l₁ ++ h :: l₂)
b': Pattern
Heqb': b' = foldr patt_imp g (l₁ ++ h' :: l₂)
IHl₁: Γ ⊢i (h' ---> h) ---> b ---> b' using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)

Γ ⊢i (b ---> b') ---> (a ---> b) ---> a ---> b' using BasicReasoning
apply prf_weaken_conclusion; subst; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
b: Pattern
Heqb: b = foldr patt_imp g (l₁ ++ h :: l₂)
b': Pattern
Heqb': b' = foldr patt_imp g (l₁ ++ h' :: l₂)
IHl₁: Γ ⊢i (h' ---> h) ---> b ---> b' using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
g1: Pattern
Heqg1: g1 = foldr patt_imp g (h :: l₂)
g2: Pattern
Heqg2: g2 = foldr patt_imp g (h' :: l₂)
prf: Γ ⊢i (b ---> b') ---> (a ---> b) ---> a ---> b' using BasicReasoning

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning

Γ ⊢i (h' ---> h) ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning

well_formed (h' ---> h)
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
well_formed (foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Γ ⊢i (h' ---> h) ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Γ ⊢i ?B ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning

Γ ⊢i ?B ---> foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂) using BasicReasoning
apply prf.
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning

well_formed (h' ---> h)
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
well_formed (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
well_formed (foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning

Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
apply IHl₁.
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning

well_formed (h' ---> h)
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
well_formed (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
h, h', g: Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfh: well_formed h
wfh': well_formed h'
wfg: well_formed g
IHl₁: Γ ⊢i (h' ---> h) ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
prf: Γ ⊢i (foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂)) ---> (a ---> foldr patt_imp g (l₁ ++ h :: l₂)) ---> a ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
well_formed (foldr patt_imp g ((a :: l₁) ++ h :: l₂) ---> foldr patt_imp g ((a :: l₁) ++ h' :: l₂))
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo

well_formed A → well_formed A' → well_formed B → Γ ⊢i A' ---> A using i → Γ ⊢i (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo

well_formed A → well_formed A' → well_formed B → Γ ⊢i A' ---> A using i → Γ ⊢i (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i

Γ ⊢i (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i

Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
H1: Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using i
Γ ⊢i (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i

Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i

Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using BasicReasoning
apply syllogism; wf_auto2.
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
H1: Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using i

Γ ⊢i (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
H1: Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
H1: Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using i
Γ ⊢i ?ϕ₁ ---> (A ---> B) ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
H1: Γ ⊢i (A' ---> A) ---> (A ---> B) ---> A' ---> B using i

Γ ⊢i A' ---> A using i
apply A'impA. Defined.
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo

well_formed A → well_formed A' → well_formed B → Γ ⊢i A' ---> A using i → Γ ⊢i A ---> B using i → Γ ⊢i A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo

well_formed A → well_formed A' → well_formed B → Γ ⊢i A' ---> A using i → Γ ⊢i A ---> B using i → Γ ⊢i A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i

Γ ⊢i A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
Γ ⊢i ?ϕ₁ ---> A' ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i

Γ ⊢i ?A ---> B using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
well_formed ?A
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
well_formed A'
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
well_formed B
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
Γ ⊢i A' ---> ?A using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i

well_formed A
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
well_formed A'
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
well_formed B
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
Γ ⊢i A' ---> A using i
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i

well_formed A
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
well_formed A'
Σ: Signature
Γ: Theory
A, A', B: Pattern
i: ProofInfo
wfA: well_formed A
wfA': well_formed A'
wfB: well_formed B
A'impA: Γ ⊢i A' ---> A using i
AimpB: Γ ⊢i A ---> B using i
well_formed B
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed h → well_formed h' → well_formed g → Γ ⊢i h' ---> h using i → Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed h → well_formed h' → well_formed g → Γ ⊢i h' ---> h using i → Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i

Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l₁ ++ h :: l₂) ---> foldr patt_imp g (l₁ ++ h' :: l₂) using BasicReasoning
apply prf_strenghten_premise_iter; wf_auto2.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i

Γ ⊢i h' ---> h using i
exact H. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed h → well_formed h' → well_formed g → Γ ⊢i h' ---> h using i → Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i → Γ ⊢i foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed h → well_formed h' → well_formed g → Γ ⊢i h' ---> h using i → Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i → Γ ⊢i foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l₁ ++ h' :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ ?h :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Pattern.wf l₁
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Pattern.wf l₂
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed ?h
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed h'
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed g
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Γ ⊢i h' ---> ?h using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Pattern.wf l₁
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Pattern.wf l₂
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed h
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed h'
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed g
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i

Pattern.wf l₁
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
Pattern.wf l₂
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed h
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed h'
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
h, h', g: Pattern
i: ProofInfo
WFl₁: Pattern.wf l₁
WFl₂: Pattern.wf l₂
WFh: well_formed h
WFh': well_formed h'
WFg: well_formed g
H: Γ ⊢i h' ---> h using i
H0: Γ ⊢i foldr patt_imp g (l₁ ++ h :: l₂) using i
well_formed g
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i a ---> b ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
Γ ⊢i a ---> b ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
apply P1; wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning

Γ ⊢i a ---> b ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning

Γ ⊢i a ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
H2: Γ ⊢i a ---> c ---> a using BasicReasoning
Γ ⊢i a ---> b ---> c ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning

Γ ⊢i a ---> c ---> a using BasicReasoning
apply P1; wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
H2: Γ ⊢i a ---> c ---> a using BasicReasoning

Γ ⊢i a ---> b ---> c ---> a using BasicReasoning
eapply (@syllogism_meta _ _ _ _ _ _ _ _ _ H2 H1).
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
H2: Γ ⊢i a ---> c ---> a using BasicReasoning

well_formed a
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
H2: Γ ⊢i a ---> c ---> a using BasicReasoning
well_formed (c ---> a)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (c ---> a) ---> b ---> c ---> a using BasicReasoning
H2: Γ ⊢i a ---> c ---> a using BasicReasoning
well_formed (b ---> c ---> a)
all: wf_auto2. Defined. (* This will form a base for the tactic 'exact 0' *)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern

well_formed a → Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern

well_formed a → Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
wfa: well_formed a
wfl: Pattern.wf l

Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a
wfl: Pattern.wf []

Γ ⊢i a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a
wfl: Pattern.wf []

Γ ⊢i a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a
wfl: Pattern.wf []

well_formed a
exact wfa.
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfl: foldr andb true (map well_formed (a0 :: l))
IHl: Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfl: well_formed a0 && foldr andb true (map well_formed l)
IHl: Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfl: well_formed a0 = true ∧ foldr andb true (map well_formed l) = true
IHl: Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Pattern.wf l → Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
apply P1; wf_auto2.
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning

Γ ⊢i a ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning

well_formed a
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
well_formed (a0 ---> foldr patt_imp a l)
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
Γ ⊢i a ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
Γ ⊢i ?B ---> a0 ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning

well_formed a
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
well_formed (foldr patt_imp a l)
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
well_formed (a0 ---> foldr patt_imp a l)
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning

well_formed a
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
well_formed (foldr patt_imp a l)
Σ: Signature
Γ: Theory
a, a0: Pattern
l: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
IHl: Γ ⊢i a ---> foldr patt_imp a l using BasicReasoning
wfa0l: Pattern.wf (a0 :: l)
H1: Γ ⊢i foldr patt_imp a l ---> a0 ---> foldr patt_imp a l using BasicReasoning
well_formed (a0 ---> foldr patt_imp a l)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern

well_formed a → Pattern.wf l₁ → Pattern.wf l₂ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern

well_formed a → Pattern.wf l₁ → Pattern.wf l₂ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂

Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
wfa: well_formed a
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂

Γ ⊢i a ---> foldr patt_imp a l₂ using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfl₁: Pattern.wf (a0 :: l₁)
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
wfa: well_formed a
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂

Γ ⊢i a ---> foldr patt_imp a l₂ using BasicReasoning
apply nested_const; wf_auto2.
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfl₁: Pattern.wf (a0 :: l₁)
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfl₁: Pattern.wf (a0 :: l₁)
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfl₁: foldr andb true (map well_formed (a0 :: l₁))
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfl₁: well_formed a0 && foldr andb true (map well_formed l₁)
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfl₁: well_formed a0 = true ∧ foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
Γ ⊢i ?ϕ₁ ---> a0 ---> foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
well_formed (foldr patt_imp a (l₁ ++ a :: l₂))
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
well_formed a0
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

well_formed (foldr patt_imp a (l₁ ++ a :: l₂))
Σ: Signature
Γ: Theory
a, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfa0: well_formed a0 = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp a (l₁ ++ a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
well_formed a0
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern

well_formed a → well_formed b → well_formed g → Pattern.wf l₁ → Pattern.wf l₂ → Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) ---> foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern

well_formed a → well_formed b → well_formed g → Pattern.wf l₁ → Pattern.wf l₂ → Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) ---> foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂

Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) ---> foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂

Γ ⊢i (a ---> b ---> foldr patt_imp g l₂) ---> b ---> a ---> foldr patt_imp g l₂ using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: Pattern.wf (a0 :: l₁)
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Γ ⊢i (a0 ---> foldr patt_imp g (l₁ ++ a :: b :: l₂)) ---> a0 ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂

Γ ⊢i (a ---> b ---> foldr patt_imp g l₂) ---> b ---> a ---> foldr patt_imp g l₂ using BasicReasoning
apply reorder; wf_auto2.
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: Pattern.wf (a0 :: l₁)
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning

Γ ⊢i (a0 ---> foldr patt_imp g (l₁ ++ a :: b :: l₂)) ---> a0 ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: Pattern.wf (a0 :: l₁)
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i (a0 ---> foldr patt_imp g (l₁ ++ a :: b :: l₂)) ---> a0 ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: foldr andb true (map well_formed (a0 :: l₁))
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i (a0 ---> foldr patt_imp g (l₁ ++ a :: b :: l₂)) ---> a0 ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfl₁: well_formed a0 = true ∧ (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i (a0 ---> foldr patt_imp g (l₁ ++ a :: b :: l₂)) ---> a0 ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i (a0 ---> foldr patt_imp g (l₁ ++ a :: b :: l₂)) ---> a0 ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

Γ ⊢i (a0 ---> foldr patt_imp g (l₁ ++ a :: b :: l₂)) ---> a0 ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

well_formed a0
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
well_formed (foldr patt_imp g (l₁ ++ a :: b :: l₂))
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
well_formed (foldr patt_imp g (l₁ ++ b :: a :: l₂))
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)

well_formed a0
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
well_formed (foldr patt_imp g (l₁ ++ a :: b :: l₂))
Σ: Signature
Γ: Theory
a, b, g, a0: Pattern
l₁, l₂: list Pattern
wfa: well_formed a
wfb: well_formed b
wfg: well_formed g
wfa0: well_formed a0 = true
wfl₁: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l₁) = true
wfl₂: Pattern.wf l₂
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ a :: b :: l₂) ---> foldr patt_imp g (l₁ ++ b :: a :: l₂) using BasicReasoning
wfa0l₁: Pattern.wf (a0 :: l₁)
well_formed (foldr patt_imp g (l₁ ++ b :: a :: l₂))
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed g → Pattern.wf l₁ → Pattern.wf l₂ → Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i → Γ ⊢i foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using i
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed g → Pattern.wf l₁ → Pattern.wf l₂ → Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i → Γ ⊢i foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using i
(* TODO we should have a function/lemma for creating these "meta" variants. *)
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFg: well_formed g
Wfl1: Pattern.wf l₁
Wfl2: Pattern.wf l₂
H: Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using i
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFg: well_formed g
Wfl1: Pattern.wf l₁
Wfl2: Pattern.wf l₂
H: Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFg: well_formed g
Wfl1: Pattern.wf l₁
Wfl2: Pattern.wf l₂
H: Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using i
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFg: well_formed g
Wfl1: Pattern.wf l₁
Wfl2: Pattern.wf l₂
H: Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using i
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFg: well_formed g
Wfl1: Pattern.wf l₁
Wfl2: Pattern.wf l₂
H: Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l₁ ++ [b; a] ++ l₂) using BasicReasoning
apply prf_reorder_iter; wf_auto2.
Σ: Signature
Γ: Theory
a, b, g: Pattern
l₁, l₂: list Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFg: well_formed g
Wfl1: Pattern.wf l₁
Wfl2: Pattern.wf l₂
H: Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ [a; b] ++ l₂) using i
exact H. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A ---> ! ! B using i → Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A ---> ! ! B using i → Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A ---> ! ! B using i

Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A ---> ! ! B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A ---> ! ! B using i
Γ ⊢i ?ϕ₁ ---> A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A ---> ! ! B using i

Γ ⊢i ?ϕ₁ ---> A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A ---> ! ! B using i

Γ ⊢i ?ϕ₁ ---> A ---> B using BasicReasoning
apply A_impl_not_not_B; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A ---> ! ! B using i

Γ ⊢i A ---> ! ! B using i
exact H. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A and B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A and B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A and B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! (! A or ! B) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
apply disj_left_intro; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning

Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning

Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
apply modus_ponens; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ((! A or ! B ---> ⊥) ---> ⊥)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i ! A ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i ?B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed (! A or ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ((! A or ! B ---> ⊥) ---> ⊥)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed (! A or ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ((! A or ! B ---> ⊥) ---> ⊥)
all: wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H2: Γ ⊢i (! A or ! B ---> ⊥) ---> ! A ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H2: Γ ⊢i (! A or ! B ---> ⊥) ---> ! A ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> ! ! A using BasicReasoning
apply H2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed (! A or ! B ---> ⊥)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! A ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! A ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ⊥
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A and B ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A and B ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A and B ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! (! A or ! B) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
apply disj_right_intro; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning

Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning

Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
apply modus_ponens; wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ((! A or ! B ---> ⊥) ---> ⊥)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i ! B ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i ?B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed (! A or ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ((! A or ! B ---> ⊥) ---> ⊥)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed (! A or ! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ((! A or ! B ---> ⊥) ---> ⊥)
all: wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H2: Γ ⊢i (! A or ! B ---> ⊥) ---> ! B ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H2: Γ ⊢i (! A or ! B ---> ⊥) ---> ! B ---> ⊥ using BasicReasoning

Γ ⊢i (! A or ! B ---> ⊥) ---> ! ! B using BasicReasoning
apply H2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning

well_formed (! B)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed (! A or ! B ---> ⊥)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i ! B ---> ! A or ! B using BasicReasoning
H0: Γ ⊢i ! A or ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
H1: Γ ⊢i ! B ---> (! A or ! B ---> ⊥) ---> ⊥ using BasicReasoning
well_formed ⊥
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A and B using i → Γ ⊢i A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A and B using i → Γ ⊢i A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
Γ ⊢i ?ϕ₁ ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i ?ϕ₁ ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i ?ϕ₁ ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed ?B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

well_formed ?B
shelve.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i A and ?B using i
1: apply H.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

well_formed B
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A and B using i → Γ ⊢i B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A and B using i → Γ ⊢i B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
Γ ⊢i ?ϕ₁ ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i ?A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed ?A
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed B
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A or ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A or ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i A or ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i ! A ---> ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed (! A)
wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A ---> B using i → Γ ⊢i A ---> ! B using i → Γ ⊢i ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A ---> B using i → Γ ⊢i A ---> ! B using i → Γ ⊢i ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i

Γ ⊢i ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i (A ---> ! B) ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
H2: Γ ⊢i (A ---> ! B) ---> ! A using i
Γ ⊢i ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i (A ---> ! B) ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
Γ ⊢i ?ϕ₁ ---> (A ---> ! B) ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i ?ϕ₁ ---> (A ---> ! B) ---> ! A using i
apply useBasicReasoning; apply H1.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning

Γ ⊢i A ---> B using i
exact AimpB.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
H2: Γ ⊢i (A ---> ! B) ---> ! A using i

Γ ⊢i ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
H2: Γ ⊢i (A ---> ! B) ---> ! A using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
H2: Γ ⊢i (A ---> ! B) ---> ! A using i
Γ ⊢i ?ϕ₁ ---> ! A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
H2: Γ ⊢i (A ---> ! B) ---> ! A using i

Γ ⊢i ?ϕ₁ ---> ! A using i
apply H2.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimpB: Γ ⊢i A ---> B using i
AimpnB: Γ ⊢i A ---> ! B using i
H1: Γ ⊢i (A ---> B) ---> (A ---> ! B) ---> ! A using BasicReasoning
H2: Γ ⊢i (A ---> ! B) ---> ! A using i

Γ ⊢i A ---> ! B using i
exact AimpnB. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo

Γ Ⱶ l₁ ++ (name ∶ g) :: l₂-------------------------------------- g using info
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo

Γ Ⱶ l₁ ++ (name ∶ g) :: l₂-------------------------------------- g using info
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (patterns_of (l₁ ++ (name ∶ g) :: l₂))

Γ Ⱶ l₁ ++ (name ∶ g) :: l₂-------------------------------------- g using info
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (patterns_of (l₁ ++ (name ∶ g) :: l₂))

Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g) :: l₂)) using info
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (patterns_of (l₁ ++ (name ∶ g) :: l₂))

Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g) :: l₂)) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

Γ ⊢i foldr patt_imp g (map nh_patt (l₁ ++ (name ∶ g) :: l₂)) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((name ∶ g) :: l₂)) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

well_formed (nh_patt (name ∶ g))
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))
Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

well_formed (nh_patt (name ∶ g))
exact wfg.
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

Pattern.wf (map nh_patt l₁)
abstract ( pose proof (wfl₁ := wf_take (length (patterns_of l₁)) wfl₁gl₂); rewrite map_app in wfl₁; rewrite take_app in wfl₁; exact wfl₁ ).
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: hypotheses
name: string
g: Pattern
info: ProofInfo
wfg: well_formed g
wfl₁gl₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g) :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
abstract ( pose proof (wfgl₂ := wf_drop (length (patterns_of l₁)) wfl₁gl₂); rewrite map_app in wfgl₂; rewrite drop_app in wfgl₂; unfold Pattern.wf in wfgl₂; simpl in wfgl₂; apply andb_prop in wfgl₂; destruct wfgl₂ as [_ wfl₂]; exact wfl₂ ). } Defined. Tactic Notation "mlExactn" constr(n) := _mlReshapeHypsByIdx n; apply MLGoal_exactn.
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo

find_hyp name l = Some (idx, name ∶ g) → Γ Ⱶ l-------------------------------------- g using info
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo

find_hyp name l = Some (idx, name ∶ g) → Γ Ⱶ l-------------------------------------- g using info
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo
Hfound: find_hyp name l = Some (idx, name ∶ g)

Γ Ⱶ l-------------------------------------- g using info
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo
Hfound: l !! idx = Some (name ∶ g) ∧ has_name name (name ∶ g) ∧ ( (j : nat) (y : named_hypothesis), l !! j = Some y → j < idx → ¬ has_name name y)

Γ Ⱶ l-------------------------------------- g using info
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo
Hfound1: l !! idx = Some (name ∶ g)
Hfound2: has_name name (name ∶ g)
Hfound3: (j : nat) (y : named_hypothesis), l !! j = Some y → j < idx → ¬ has_name name y

Γ Ⱶ l-------------------------------------- g using info
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo
Hfound1: l !! idx = Some (name ∶ g)
Hfound2: has_name name (name ∶ g)
Hfound3: (j : nat) (y : named_hypothesis), l !! j = Some y → j < idx → ¬ has_name name y

l !! idx = Some (name ∶ g)
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo
Hfound1: l !! idx = Some (name ∶ g)
Hfound2: has_name name (name ∶ g)
Hfound3: (j : nat) (y : named_hypothesis), l !! j = Some y → j < idx → ¬ has_name name y
Γ Ⱶ take idx l ++ (name ∶ g) :: drop (S idx) l-------------------------------------- g using info
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo
Hfound1: l !! idx = Some (name ∶ g)
Hfound2: has_name name (name ∶ g)
Hfound3: (j : nat) (y : named_hypothesis), l !! j = Some y → j < idx → ¬ has_name name y

l !! idx = Some (name ∶ g)
exact Hfound1.
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g: Pattern
idx: nat
info: ProofInfo
Hfound1: l !! idx = Some (name ∶ g)
Hfound2: has_name name (name ∶ g)
Hfound3: (j : nat) (y : named_hypothesis), l !! j = Some y → j < idx → ¬ has_name name y

Γ Ⱶ take idx l ++ (name ∶ g) :: drop (S idx) l-------------------------------------- g using info
apply MLGoal_exactn. Defined. Tactic Notation "mlExact" constr(name') := eapply MLGoal_exact with (name := name'); simpl; apply f_equal; reflexivity.
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a = true → well_formed b = true → well_formed c = true → Γ ⊢i a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a = true → well_formed b = true → well_formed c = true → Γ ⊢i a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true

Γ ⊢i a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true

well_formed (a ---> b ---> c ---> b)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true
Γ Ⱶ a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true

well_formed (a ---> b ---> c ---> b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true

Γ Ⱶ a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true

Γ Ⱶ "H1" ∶ a, -------------------------------------- b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true

Γ Ⱶ "H1" ∶ a, "H2" ∶ b, -------------------------------------- c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfc: well_formed c = true

Γ Ⱶ "H1" ∶ a, "H2" ∶ b, "H3" ∶ c, -------------------------------------- b using BasicReasoning
mlExact "H2". Defined.
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo

Γ ⊢i g ---> g' using i → Γ Ⱶ l-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g' using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo

Γ ⊢i g ---> g' using i → Γ Ⱶ l-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g' using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: Γ Ⱶ l-------------------------------------- g using i

Γ Ⱶ l-------------------------------------- g' using i
(*mlExtractWF wfl wfgp.*)
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i )

well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g' using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g' using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- g' using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g' using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g' using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- g' using i )
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i

well_formed g' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed (g ---> g')

Γ ⊢i foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g

Γ ⊢i foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed ?g
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed g'
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
Γ ⊢i ?g ---> g' using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
Γ ⊢i foldr patt_imp ?g (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed g'
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
Γ ⊢i g ---> g' using i
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed g'
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
g, g': Pattern
i: ProofInfo
Hgg': Γ ⊢i g ---> g' using i
Hlg: well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfl: Pattern.wf (patterns_of l)
wfimp: well_formed g
Pattern.wf (patterns_of l)
all: assumption. Defined.
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
Γ ⊢i (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
apply modus_ponens; assumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning

Γ ⊢i (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning

Γ ⊢i (a ---> (a ---> b) ---> b) ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
H2: Γ ⊢i (a ---> (a ---> b) ---> b) ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning
Γ ⊢i (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning

Γ ⊢i (a ---> (a ---> b) ---> b) ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning
apply P2; wf_auto2.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
H2: Γ ⊢i (a ---> (a ---> b) ---> b) ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning

Γ ⊢i (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
H2: Γ ⊢i (a ---> (a ---> b) ---> b) ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
H2: Γ ⊢i (a ---> (a ---> b) ---> b) ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning
Γ ⊢i ?ϕ₁ ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
H1: Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
H2: Γ ⊢i (a ---> (a ---> b) ---> b) ---> (a ---> a ---> b) ---> a ---> b using BasicReasoning

Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
apply H1. Defined.
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
apply reorder; wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning

Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning

Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
apply H1.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning

well_formed (a ---> b)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
well_formed ((a ---> b ---> c) ---> a ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Γ ⊢i ?B ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Γ ⊢i (a ---> b) ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning

well_formed (a ---> b)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
well_formed ((b ---> a ---> c) ---> a ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
well_formed ((a ---> b ---> c) ---> a ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i (a ---> b ---> c) ---> b ---> a ---> c using BasicReasoning
H2: Γ ⊢i ((b ---> a ---> c) ---> a ---> c) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
apply syllogism; wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
apply prf_contraction; wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]

Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]

Γ ⊢i foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c] using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]

Pattern.wf [a ---> b; b ---> a ---> c]
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
well_formed ?g
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
well_formed (a ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
Γ ⊢i ?g ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
Γ ⊢i foldr patt_imp ?g [a ---> b; b ---> a ---> c] using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]

Pattern.wf [a ---> b; b ---> a ---> c]
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
well_formed (a ---> a ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
well_formed (a ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]

Pattern.wf [a ---> b; b ---> a ---> c]
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
well_formed (a ---> a ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H3: Γ ⊢i (a ---> b) ---> (b ---> a ---> c) ---> a ---> a ---> c using BasicReasoning
H4: Γ ⊢i (a ---> a ---> c) ---> a ---> c using BasicReasoning
Hiter: ((a ---> b) ---> (b ---> a ---> c) ---> a ---> c) = foldr patt_imp (a ---> c) [a ---> b; b ---> a ---> c]
well_formed (a ---> c)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b using i → Γ ⊢i (a ---> b ---> c) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b using i → Γ ⊢i (a ---> b ---> c) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b using i

Γ ⊢i (a ---> b ---> c) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b using i
Γ ⊢i ?ϕ₁ ---> (a ---> b ---> c) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b using i

Γ ⊢i ?ϕ₁ ---> (a ---> b ---> c) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b using i

Γ ⊢i ?ϕ₁ ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
apply prf_weaken_conclusion_under_implication; wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b using i

Γ ⊢i a ---> b using i
exact H. Defined.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b using i → Γ ⊢i a ---> b ---> c using i → Γ ⊢i a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b using i → Γ ⊢i a ---> b ---> c using i → Γ ⊢i a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

Γ ⊢i a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i
Γ ⊢i ?ϕ₁ ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

Γ ⊢i ?ϕ₁ using i
apply H2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

Γ ⊢i (a ---> b ---> c) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

Γ ⊢i (a ---> b ---> c) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

well_formed a
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i
well_formed b
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i
well_formed c
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i
Γ ⊢i a ---> b using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

Γ ⊢i a ---> b using i
apply H1.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i

well_formed a
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i
well_formed b
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H1: Γ ⊢i a ---> b using i
H2: Γ ⊢i a ---> b ---> c using i
well_formed c
all: wf_auto2. } Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i ((g ---> g') ---> foldr patt_imp g l) ---> (g ---> g') ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i ((g ---> g') ---> foldr patt_imp g l) ---> (g ---> g') ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i ((g ---> g') ---> foldr patt_imp g l) ---> (g ---> g') ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H1: Γ ⊢i (g ---> g') ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning

Γ ⊢i ((g ---> g') ---> foldr patt_imp g l) ---> (g ---> g') ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
H1: Γ ⊢i a ---> foldr patt_imp g l ---> foldr patt_imp g' l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
H1: Γ ⊢i a ---> b ---> foldr patt_imp g' l using BasicReasoning

Γ ⊢i (a ---> b) ---> a ---> foldr patt_imp g' l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a

Γ ⊢i (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b

Γ ⊢i (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c

Γ ⊢i (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
well_formed (a ---> b)
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
well_formed (a ---> b ---> c)
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b) ---> (a ---> b ---> c) ---> a ---> c using BasicReasoning
well_formed (a ---> c)
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using BasicReasoning

Γ ⊢i (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using BasicReasoning

Γ ⊢i ?ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using BasicReasoning
Γ ⊢i ?ϕ₁ ---> (a ---> b) ---> a ---> c using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
a: Pattern
Heqa: a = (g ---> g')
b: Pattern
Heqb: b = foldr patt_imp g l
c: Pattern
Heqc: c = foldr patt_imp g' l
H1: Γ ⊢i a ---> b ---> c using BasicReasoning
H: well_formed a
H0: well_formed b
H2: well_formed c
H2': Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using BasicReasoning

Γ ⊢i a ---> b ---> c using BasicReasoning
apply H1. Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i → Γ ⊢i (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed g' → Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i → Γ ⊢i (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i

Γ ⊢i (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i
Γ ⊢i ?ϕ₁ ---> (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i

Γ ⊢i ?ϕ₁ ---> (g ---> g') ---> foldr patt_imp g' l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i

Γ ⊢i ?ϕ₁ ---> (g ---> g') ---> foldr patt_imp g' l using BasicReasoning
apply prf_weaken_conclusion_iter_under_implication; wf_auto2.
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i

Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, g': Pattern
i: ProofInfo
wfl: Pattern.wf l
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i

Γ ⊢i (g ---> g') ---> foldr patt_imp g l using i
exact H. } Defined.
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo

Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i → Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo

Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i → Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i

Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed (mlConclusion (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g using i )

well_formed (mlConclusion (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i ))) → mlTheory (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i )) (patterns_of (mlHypotheses (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i ))) using mlInfo (Γ Ⱶ (name ∶ g ---> g') :: l-------------------------------------- g' using i )
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i

well_formed g' → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l: Pattern.wf ((g ---> g') :: patterns_of l)

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l, Htmp: Pattern.wf ((g ---> g') :: patterns_of l)

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l: Pattern.wf ((g ---> g') :: patterns_of l)
Htmp: foldr andb true (map well_formed ((g ---> g') :: patterns_of l))

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l: Pattern.wf ((g ---> g') :: patterns_of l)
Htmp: well_formed (g ---> g') && foldr andb true (map well_formed (patterns_of l))

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l: Pattern.wf ((g ---> g') :: patterns_of l)
Htmp: well_formed (g ---> g') = true ∧ foldr andb true (map well_formed (patterns_of l)) = true

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l: Pattern.wf ((g ---> g') :: patterns_of l)
wfgg': well_formed (g ---> g') = true
wfl: foldr andb true (map well_formed (patterns_of l)) = true

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf ((g ---> g') :: patterns_of l) → Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l: Pattern.wf ((g ---> g') :: patterns_of l)
wfgg': well_formed g
wfl: foldr andb true (map well_formed (patterns_of l)) = true

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: Γ ⊢i (g ---> g') ---> foldr patt_imp g (patterns_of l) using i
wfg': well_formed g'
wfgg'l: Pattern.wf ((g ---> g') :: patterns_of l)
wfgg': well_formed g
wfl: foldr andb true (map well_formed (patterns_of l)) = true

Γ ⊢i (g ---> g') ---> foldr patt_imp g' (patterns_of l) using i
apply prf_weaken_conclusion_iter_under_implication_meta; assumption. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern

Pattern.wf l₁ → Pattern.wf l₂ → well_formed g → well_formed g' → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern

Pattern.wf l₁ → Pattern.wf l₂ → well_formed g → well_formed g' → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₂: list Pattern
g, g': Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i ((g ---> g') ---> foldr patt_imp g l₂) ---> (g ---> g') ---> foldr patt_imp g' l₂ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₂: list Pattern
g, g': Pattern
wfl₁: Pattern.wf []
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'

Γ ⊢i ((g ---> g') ---> foldr patt_imp g l₂) ---> (g ---> g') ---> foldr patt_imp g' l₂ using BasicReasoning
apply prf_weaken_conclusion_iter_under_implication; auto.
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfl₁: Pattern.wf (a :: l₁)
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfl₁: foldr andb true (map well_formed (a :: l₁))
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfl₁: well_formed a && foldr andb true (map well_formed l₁)
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfl₁: well_formed a = true ∧ foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Pattern.wf l₁ → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

Γ ⊢i (a ---> foldr patt_imp g (l₁ ++ (g ---> g') :: l₂)) ---> a ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

well_formed a
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
well_formed (foldr patt_imp g (l₁ ++ (g ---> g') :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
well_formed (foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)

well_formed a
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
well_formed (foldr patt_imp g (l₁ ++ (g ---> g') :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₁, l₂: list Pattern
g, g': Pattern
wfa: well_formed a = true
wfl₁: foldr andb true (map well_formed l₁) = true
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
IHl₁: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
wfal₁: Pattern.wf (a :: l₁)
well_formed (foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂))
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed g → well_formed g' → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i → Γ ⊢i foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed g → well_formed g' → Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i → Γ ⊢i foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i

Γ ⊢i foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
g, g': Pattern
i: ProofInfo
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfg: well_formed g
wfg': well_formed g'
H: Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) using i

Γ ⊢i foldr patt_imp g (l₁ ++ (g ---> g') :: l₂) ---> foldr patt_imp g' (l₁ ++ (g ---> g') :: l₂) using BasicReasoning
apply prf_weaken_conclusion_iter_under_implication_iter; wf_auto2. } Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo

Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i → Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo

Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i → Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo

(well_formed (mlConclusion (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g using i )) → well_formed (mlConclusion (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i ))) → mlTheory (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i ))) using mlInfo (Γ Ⱶ l₁ ++ (name ∶ g ---> g') :: l₂-------------------------------------- g' using i )
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo

(well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i) → well_formed g' → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g' (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂))

Γ ⊢i foldr patt_imp g' (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt (l₁ ++ (name ∶ g ---> g') :: l₂))

Γ ⊢i foldr patt_imp g' (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Γ ⊢i foldr patt_imp g' (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Γ ⊢i foldr patt_imp g' (map nh_patt (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Γ ⊢i foldr patt_imp g' (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
well_formed g
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
well_formed g'
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ (g ---> g') :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Pattern.wf (map nh_patt l₁)
abstract (pose proof (wfl₁ := wf_take (length (patterns_of l₁)) wfl₁gg'l₂); simpl in wfl₁; rewrite take_app in wfl₁; exact wfl₁).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
well_formed g
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
well_formed g'
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ (g ---> g') :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
abstract ( pose proof (wfgg'l₂ := wf_drop (length (patterns_of l₁)) wfl₁gg'l₂); rewrite drop_app in wfgg'l₂; pose proof (Htmp := wfgg'l₂); unfold Pattern.wf in Htmp; simpl in Htmp; apply andb_prop in Htmp; destruct Htmp as [wfgg' wfl₂]; exact wfl₂ ).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

well_formed g
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
well_formed g'
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ (g ---> g') :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

well_formed g
abstract( pose proof (wfgg'l₂ := wf_drop (length (patterns_of l₁)) wfl₁gg'l₂); rewrite drop_app in wfgg'l₂; pose proof (Htmp := wfgg'l₂); unfold Pattern.wf in Htmp; simpl in Htmp; apply andb_prop in Htmp; destruct Htmp as [wfgg' wfl₂]; pose proof (wfg := well_formed_imp_proj1 wfgg'); exact wfg ).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

well_formed g'
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ (g ---> g') :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

well_formed g'
exact wfg'.
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ (g ---> g') :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
H: well_formed g → Pattern.wf (map nh_patt (l₁ ++ (name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt (l₁ ++ (name ∶ g ---> g') :: l₂)) using i
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))

Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ (g ---> g') :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
H: well_formed g → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) using i

Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ (g ---> g') :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
H: well_formed g → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) using i

well_formed g
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
H: well_formed g → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) using i
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
H: well_formed g → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) using i

well_formed g
abstract( pose proof (wfgg'l₂ := wf_drop (length (patterns_of l₁)) wfl₁gg'l₂); rewrite drop_app in wfgg'l₂; pose proof (Htmp := wfgg'l₂); unfold Pattern.wf in Htmp; simpl in Htmp; apply andb_prop in Htmp; destruct Htmp as [wfgg' wfl₂]; pose proof (wfg := well_formed_imp_proj1 wfgg'); exact wfg ).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
name: string
g, g': Pattern
i: ProofInfo
wfg': well_formed g'
wfl₁gg'l₂: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
H: well_formed g → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂)) using i

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((name ∶ g ---> g') :: l₂))
exact wfl₁gg'l₂. Defined. Tactic Notation "mlApplyn" constr(n) := _mlReshapeHypsByIdx n; apply MLGoal_weakenConclusion; _mlReshapeHypsBack. Tactic Notation "mlApply" constr(name') := _mlReshapeHypsByName name'; apply MLGoal_weakenConclusion; _mlReshapeHypsBack.
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i a ---> (a ---> b) ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (a ---> (a ---> b) ---> b)
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ a ---> (a ---> b) ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (a ---> (a ---> b) ---> b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ a ---> (a ---> b) ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ a, -------------------------------------- (a ---> b) ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ a, "H2" ∶ a ---> b, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ a, "H2" ∶ a ---> b, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i a ---> (a ---> b) ---> a using BasicReasoning
apply P1; wf_auto2. Defined.
Σ: Signature
Γ: Theory
p, q, r, s: Pattern

well_formed p → well_formed q → well_formed r → well_formed s → Γ ⊢i (p ---> q) ---> (r ---> s) ---> p or r ---> q or s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern

well_formed p → well_formed q → well_formed r → well_formed s → Γ ⊢i (p ---> q) ---> (r ---> s) ---> p or r ---> q or s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ ⊢i (p ---> q) ---> (r ---> s) ---> p or r ---> q or s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ ⊢i (p ---> q) ---> (r ---> s) ---> (! p ---> r) ---> ! q ---> s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

well_formed ((p ---> q) ---> (r ---> s) ---> (! p ---> r) ---> ! q ---> s)
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s
Γ Ⱶ (p ---> q) ---> (r ---> s) ---> (! p ---> r) ---> ! q ---> s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

well_formed ((p ---> q) ---> (r ---> s) ---> (! p ---> r) ---> ! q ---> s)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ (p ---> q) ---> (r ---> s) ---> (! p ---> r) ---> ! q ---> s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, -------------------------------------- (r ---> s) ---> (! p ---> r) ---> ! q ---> s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, -------------------------------------- (! p ---> r) ---> ! q ---> s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, "H2" ∶ ! p ---> r, -------------------------------------- ! q ---> s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, "H2" ∶ ! p ---> r, "H3" ∶ ! q, -------------------------------------- s using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, "H2" ∶ ! p ---> r, "H3" ∶ ! q, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, "H2" ∶ ! p ---> r, "H3" ∶ ! q, -------------------------------------- ! p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, "H2" ∶ ! p ---> r, "H3" ∶ ! q, "H4" ∶ p, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, "H2" ∶ ! p ---> r, "H3" ∶ q ---> ⊥, "H4" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r, s: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
wfs: well_formed s

Γ Ⱶ "H0" ∶ p ---> q, "H1" ∶ r ---> s, "H2" ∶ ! p ---> r, "H3" ∶ q ---> ⊥, "H4" ∶ p, -------------------------------------- p using BasicReasoning
mlExact "H4". Defined.
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo

well_formed a → well_formed b → Γ ⊢i b using i → Γ ⊢i a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo

well_formed a → well_formed b → Γ ⊢i b using i → Γ ⊢i a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
H: Γ ⊢i b using i
Γ ⊢i ?ϕ₁ ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i b ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i b ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i b ---> a ---> b using BasicReasoning
apply P1; wf_auto2. } Defined.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c using i → Γ ⊢i (a ---> b) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c using i → Γ ⊢i (a ---> b) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ ⊢i (a ---> b) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Γ ⊢i ?ϕ₁ ---> (a ---> b) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ ⊢i (a ---> b ---> c) ---> (a ---> b) ---> a ---> c using BasicReasoning
apply P2; wf_auto2. } Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfh: well_formed h

Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
g, h: Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfh: well_formed h

Γ ⊢i h ---> (h ---> g) ---> g using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfh: well_formed h
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
g, h: Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfh: well_formed h

Γ ⊢i h ---> (h ---> g) ---> g using BasicReasoning
apply modus_ponens; auto.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfh: well_formed h
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfh: well_formed h
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfl: foldr andb true (map well_formed (a :: l))
wfg: well_formed g
wfh: well_formed h
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfl: well_formed a = true ∧ (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
apply prf_add_assumption; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
apply H1.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
apply P2; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning

well_formed (a ---> foldr patt_imp h l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
well_formed ((a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i ?B ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l) ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning

well_formed (a ---> foldr patt_imp h l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
well_formed (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
well_formed ((a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning

well_formed (a ---> foldr patt_imp h l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
well_formed (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl: (fix fold_right (l : list bool) : bool := match l with | [] => true | b :: t => b && fold_right t end) ((fix map (l : list Pattern) : list bool := match l with | [] => [] | a :: t => well_formed a :: map t end) l) = true
wfg: well_formed g
wfh: well_formed h
IHl: Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
wfal: Pattern.wf (a :: l)
H1: Γ ⊢i a ---> foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l) ---> a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l) ---> (a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l using BasicReasoning
well_formed ((a ---> foldr patt_imp g (l ++ [h])) ---> a ---> foldr patt_imp g l)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l using i → Γ ⊢i foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l using i → Γ ⊢i foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i

Γ ⊢i foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i

Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i

Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i

Γ ⊢i foldr patt_imp h l ---> foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i

Pattern.wf l
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
well_formed g
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
well_formed h
all: wf_auto2. } Defined.
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l using i → Γ ⊢i foldr patt_imp g (l ++ [h]) using i → Γ ⊢i foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l using i → Γ ⊢i foldr patt_imp g (l ++ [h]) using i → Γ ⊢i foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i

Γ ⊢i foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i

Γ ⊢i ?ϕ₁ using i
apply H0.
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i

Γ ⊢i foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i

Γ ⊢i foldr patt_imp g (l ++ [h]) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i

Pattern.wf l
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i
well_formed g
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i
well_formed h
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i
Γ ⊢i foldr patt_imp h l using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i

Pattern.wf l
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i
well_formed g
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l using i
H0: Γ ⊢i foldr patt_imp g (l ++ [h]) using i
well_formed h
all: wf_auto2. } Defined.
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo

well_formed h → Γ Ⱶ l-------------------------------------- h using i → Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo

well_formed h → Γ Ⱶ l-------------------------------------- h using i → Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: Γ Ⱶ l-------------------------------------- h using i
H2: Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i

Γ Ⱶ l-------------------------------------- g using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- h using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- h using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- h using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- h using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- h using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- h using i )
H2: well_formed (mlConclusion (Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l ++ (name ∶ h, )-------------------------------------- g using i )

well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i )
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i

well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed ?h
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp ?h (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp g (patterns_of l ++ [?h]) using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed h
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed h
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp g (patterns_of l ++ [h]) using i
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed h
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed h
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
H2: well_formed g → Pattern.wf (patterns_of (l ++ (name ∶ h, ))) → Γ ⊢i foldr patt_imp g (patterns_of (l ++ (name ∶ h, ))) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
H2: well_formed g → Pattern.wf (map nh_patt l ++ map nh_patt (name ∶ h, )) → Γ ⊢i foldr patt_imp g (map nh_patt l ++ map nh_patt (name ∶ h, )) using i
well_formed g
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
H2: well_formed g → Pattern.wf (map nh_patt l ++ map nh_patt (name ∶ h, )) → Γ ⊢i foldr patt_imp g (map nh_patt l ++ map nh_patt (name ∶ h, )) using i
Pattern.wf (map nh_patt l ++ map nh_patt (name ∶ h, ))
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
H2: well_formed g → Pattern.wf (map nh_patt l ++ map nh_patt (name ∶ h, )) → Γ ⊢i foldr patt_imp g (map nh_patt l ++ map nh_patt (name ∶ h, )) using i

Pattern.wf (map nh_patt l ++ map nh_patt (name ∶ h, ))
Σ: Signature
Γ: Theory
l: hypotheses
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp h (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
H2: well_formed g → Pattern.wf (map nh_patt l ++ map nh_patt (name ∶ h, )) → Γ ⊢i foldr patt_imp g (map nh_patt l ++ map nh_patt (name ∶ h, )) using i

Pattern.wf (map nh_patt l ++ map nh_patt (name ∶ h, ))
abstract ( unfold Pattern.wf; rewrite map_app; rewrite foldr_app; simpl; rewrite wfh; simpl; exact wfl ). } Defined.
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf l1
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h

Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf []
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h

Γ ⊢i h ---> (h ---> foldr patt_imp g l2) ---> foldr patt_imp g l2 using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf (a :: l1)
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf []
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h

Γ ⊢i h ---> (h ---> foldr patt_imp g l2) ---> foldr patt_imp g l2 using BasicReasoning
apply modus_ponens; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf (a :: l1)
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf (a :: l1)
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: foldr andb true (map well_formed (a :: l1))
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: well_formed a && foldr andb true (map well_formed l1)
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: well_formed a = true ∧ foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)

Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
apply prf_add_assumption; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
exact H1.
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
apply P2; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp h l1) ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

well_formed (a ---> foldr patt_imp h l1)
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
well_formed ((a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2))
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Γ ⊢i ?B ---> (a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l1) ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

well_formed (a ---> foldr patt_imp h l1)
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
well_formed (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2))
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
well_formed ((a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2))
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning

well_formed (a ---> foldr patt_imp h l1)
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
well_formed (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2))
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
wfal1: Pattern.wf (a :: l1)
H1: Γ ⊢i a ---> foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H2: Γ ⊢i (a ---> foldr patt_imp h l1) ---> a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
H3: Γ ⊢i (a ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2)) ---> (a ---> foldr patt_imp g (l1 ++ [h] ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
well_formed ((a ---> foldr patt_imp g (l1 ++ h :: l2)) ---> a ---> foldr patt_imp g (l1 ++ l2))
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l1 using i → Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l1 using i → Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i

Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i

Γ ⊢i ?ϕ₁ using i
apply H.
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i

Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i

Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i

Γ ⊢i foldr patt_imp h l1 ---> foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using BasicReasoning
apply prf_add_lemma_under_implication_generalized; wf_auto2. } Defined.
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l1 using i → Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i → Γ ⊢i foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp h l1 using i → Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i → Γ ⊢i foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i

Γ ⊢i foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i

Γ ⊢i ?ϕ₁ using i
apply H0.
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i

Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i

Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) ---> foldr patt_imp g (l1 ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i

Pattern.wf l1
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
Pattern.wf l2
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
well_formed g
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
well_formed h
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
Γ ⊢i foldr patt_imp h l1 using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i

Pattern.wf l1
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
Pattern.wf l2
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
well_formed g
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
WFl1: Pattern.wf l1
WFl2: Pattern.wf l2
WFg: well_formed g
WGh: well_formed h
H: Γ ⊢i foldr patt_imp h l1 using i
H0: Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
well_formed h
all: wf_auto2. } Defined.
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo

well_formed h → Γ Ⱶ l1-------------------------------------- h using i → Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i → Γ Ⱶ l1 ++ l2-------------------------------------- g using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo

well_formed h → Γ Ⱶ l1-------------------------------------- h using i → Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i → Γ Ⱶ l1 ++ l2-------------------------------------- g using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: Γ Ⱶ l1-------------------------------------- h using i
H2: Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i

Γ Ⱶ l1 ++ l2-------------------------------------- g using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed (mlConclusion (Γ Ⱶ l1-------------------------------------- h using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l1-------------------------------------- h using i ))) → mlTheory (Γ Ⱶ l1-------------------------------------- h using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l1-------------------------------------- h using i )) (patterns_of (mlHypotheses (Γ Ⱶ l1-------------------------------------- h using i ))) using mlInfo (Γ Ⱶ l1-------------------------------------- h using i )
H2: well_formed (mlConclusion (Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l1 ++ (name ∶ h, ) ++ l2-------------------------------------- g using i )

well_formed (mlConclusion (Γ Ⱶ l1 ++ l2-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ l2-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l1 ++ l2-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l1 ++ l2-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ l2-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l1 ++ l2-------------------------------------- g using i )
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i

well_formed g → Pattern.wf (patterns_of (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ l2)) using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ l2)) using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (map nh_patt l2)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed g
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed ?h
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Γ ⊢i foldr patt_imp ?h (map nh_patt l1) using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ [?h] ++ map nh_patt l2) using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (map nh_patt l2)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed g
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed h
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed h
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (patterns_of l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ [h] ++ map nh_patt l2) using i
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (map nh_patt l2)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed g
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed h
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
well_formed h
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (patterns_of l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
H2: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) using i
well_formed g
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
H2: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2))
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (map nh_patt l2)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (patterns_of l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
H2: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2))
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (map nh_patt l1)
abstract ( apply (wf_take (length (patterns_of l1))) in wfl1l2; unfold patterns_of in wfl1l2; rewrite map_app in wfl1l2; rewrite take_app in wfl1l2; exact wfl1l2 ).
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (map nh_patt l2)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
Pattern.wf (patterns_of l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
H2: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2))
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (map nh_patt l2)
abstract ( apply (wf_drop (length (patterns_of l1))) in wfl1l2; unfold patterns_of in wfl1l2; rewrite map_app in wfl1l2; rewrite drop_app in wfl1l2; exact wfl1l2 ).
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (patterns_of l1)
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
H2: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2))
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
H2: well_formed g → Pattern.wf (patterns_of (l1 ++ (name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ (name ∶ h) :: l2)) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))

Pattern.wf (patterns_of l1)
abstract ( apply (wf_take (length (patterns_of l1))) in wfl1l2; unfold patterns_of in wfl1l2; rewrite map_app in wfl1l2; rewrite take_app in wfl1l2; exact wfl1l2 ).
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
H2: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) using i

Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2))
Σ: Signature
Γ: Theory
l1: hypotheses
l2: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
wfh: well_formed h
H1: well_formed h → Pattern.wf (patterns_of l1) → Γ ⊢i foldr patt_imp h (patterns_of l1) using i
wfg: well_formed g
wfl1l2: Pattern.wf (patterns_of (l1 ++ l2))
H2: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2)) using i

Pattern.wf (map nh_patt l1 ++ map nh_patt ((name ∶ h) :: l2))
abstract( pose proof (wfl1 := wf_take (length (patterns_of l1)) wfl1l2); unfold patterns_of in wfl1; rewrite map_app in wfl1; rewrite take_app in wfl1; pose proof (wfl2 := wf_drop (length (patterns_of l1)) wfl1l2); unfold patterns_of in wfl2; rewrite map_app in wfl2; rewrite drop_app in wfl2; unfold Pattern.wf; rewrite map_app; rewrite foldr_app; simpl; rewrite wfh; unfold Pattern.wf in wfl2; rewrite wfl2; simpl; exact wfl1 ). } Defined. Tactic Notation "_mlAssert_nocheck" "(" constr(name) ":" constr(t) ")" := match goal with | |- @of_MLGoal ?Sgm (@mkMLGoal ?Sgm ?Ctx ?l ?g ?i) => let Hwf := fresh "Hwf" in assert (Hwf : well_formed t); [idtac| let H := fresh "H" in assert (H : @mkMLGoal Sgm Ctx l t i); [ | (eapply (@mlGoal_assert Sgm Ctx l name g t i Hwf H); rewrite [_ ++ _]/=; clear H)] ] end. (* TODO: make this bind tigther. *) Tactic Notation "mlAssert" "(" constr(name) ":" constr(t) ")" := _failIfUsed name; _mlAssert_nocheck (name : t) . Tactic Notation "mlAssert" "(" constr (t) ")" := let hyps := _getHypNames in let name := eval lazy in (fresh hyps) in mlAssert (name : (t)).
Σ: Signature
Γ: Theory
a: Pattern

well_formed a → Γ ⊢i a ---> a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern

well_formed a → Γ ⊢i a ---> a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ ⊢i a ---> a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed (a ---> a ---> a)
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a
Γ Ⱶ a ---> a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed (a ---> a ---> a)
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ a ---> a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H0" ∶ a, -------------------------------------- a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H0" ∶ a, "H1" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed a
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a
Γ Ⱶ "H0" ∶ a, "H1" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a
Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed a
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a

Γ Ⱶ "H0" ∶ a, "H1" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a
Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a

Γ Ⱶ "H0" ∶ a, "H1" ∶ a, -------------------------------------- a using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a

Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a

well_formed a
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf, Hwf0: well_formed a
Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf, Hwf0: well_formed a
Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, "0" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf: well_formed a

well_formed a
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf, Hwf0: well_formed a

Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf, Hwf0: well_formed a
Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, "0" ∶ a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf, Hwf0: well_formed a

Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, -------------------------------------- a using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
a: Pattern
wfa, Hwf, Hwf0: well_formed a

Γ Ⱶ "H0" ∶ a, "H1" ∶ a, "H2" ∶ a, "0" ∶ a, -------------------------------------- a using BasicReasoning
mlExact "H2". Qed. Ltac _getGoalProofInfo := lazymatch goal with | |- @of_MLGoal ?Sgm (@mkMLGoal ?Sgm ?Ctx ?l ?g ?i) => i end. Ltac _getGoalTheory := lazymatch goal with | |- @of_MLGoal ?Sgm (@mkMLGoal ?Sgm ?Ctx ?l ?g ?i) => Ctx end. Tactic Notation "mlAssert" "(" constr(name) ":" constr(t) ")" "using" "first" constr(n) := _failIfUsed name; lazymatch goal with | |- @of_MLGoal ?Sgm (@mkMLGoal ?Sgm ?Ctx ?l ?g ?i) => let l1 := fresh "l1" in let l2 := fresh "l2" in let Heql1 := fresh "Heql1" in let Heql2 := fresh "Heql2" in remember (take n l) as l1 eqn:Heql1 in |-; remember (drop n l) as l2 eqn:Heql2 in |-; simpl in Heql1; simpl in Heql2; eapply cast_proof_ml_hyps; [( rewrite -[l](take_drop n); reflexivity )|]; let Hwf := fresh "Hwf" in assert (Hwf : well_formed t); [idtac| let H := fresh "H" in assert (H : @mkMLGoal Sgm Ctx l1 t i) ; [ (eapply cast_proof_ml_hyps; [(rewrite Heql1; reflexivity)|]); clear l1 l2 Heql1 Heql2 | apply (cast_proof_ml_hyps (f_equal patterns_of Heql1)) in H; eapply (@mlGoal_assert_generalized Sgm Ctx (take n l) (drop n l) name g t i Hwf H); rewrite [_ ++ _]/=; clear l1 l2 Heql1 Heql2 H] ] end. Tactic Notation "mlAssert" "(" constr(t) ")" "using" "first" constr(n) := let hyps := _getHypNames in let name := eval cbv in (fresh hyps) in mlAssert (name : t) using first n.
Σ: Signature
Γ: Theory
p, q, a, b: Pattern

well_formed a = true → well_formed b = true → well_formed p = true → well_formed q = true → Γ ⊢i a ---> p and q ---> b ---> ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern

well_formed a = true → well_formed b = true → well_formed p = true → well_formed q = true → Γ ⊢i a ---> p and q ---> b ---> ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true

Γ ⊢i a ---> p and q ---> b ---> ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true

well_formed (a ---> p and q ---> b ---> ! ! q)
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Γ Ⱶ a ---> p and q ---> b ---> ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true

well_formed (a ---> p and q ---> b ---> ! ! q)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true

Γ Ⱶ a ---> p and q ---> b ---> ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true

Γ Ⱶ "H0" ∶ a, -------------------------------------- p and q ---> b ---> ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, -------------------------------------- b ---> ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, "H2" ∶ b, -------------------------------------- ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
l1: list named_hypothesis
Heql1: l1 = ("H0" ∶ a, "H1" ∶ p and q, )
l2: list named_hypothesis
Heql2: l2 = ("H2" ∶ b, )

well_formed p
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p
Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p
Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, "H4" ∶ p, "H2" ∶ b, -------------------------------------- ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
l1: list named_hypothesis
Heql1: l1 = ("H0" ∶ a, "H1" ∶ p and q, )
l2: list named_hypothesis
Heql2: l2 = ("H2" ∶ b, )

well_formed p
wf_auto2.
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p
Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, "H4" ∶ p, "H2" ∶ b, -------------------------------------- ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
admit.
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, "H4" ∶ p, "H2" ∶ b, -------------------------------------- ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p
l1: list named_hypothesis
Heql1: l1 = ("H0" ∶ a, "H1" ∶ p and q, )
l2: list named_hypothesis
Heql2: l2 = ("H4" ∶ p, "H2" ∶ b, )

well_formed p
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf, Hwf0: well_formed p
Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf, Hwf0: well_formed p
Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, "0" ∶ p, "H4" ∶ p, "H2" ∶ b, -------------------------------------- ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf: well_formed p
l1: list named_hypothesis
Heql1: l1 = ("H0" ∶ a, "H1" ∶ p and q, )
l2: list named_hypothesis
Heql2: l2 = ("H4" ∶ p, "H2" ∶ b, )

well_formed p
wf_auto2.
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf, Hwf0: well_formed p

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf, Hwf0: well_formed p
Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, "0" ∶ p, "H4" ∶ p, "H2" ∶ b, -------------------------------------- ! ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf, Hwf0: well_formed p

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
admit.
Σ: Signature
Γ: Theory
p, q, a, b: Pattern
wfa: well_formed a = true
wfb: well_formed b = true
wfp: well_formed p = true
wfq: well_formed q = true
Hwf, Hwf0: well_formed p

Γ Ⱶ "H0" ∶ a, "H1" ∶ p and q, "0" ∶ p, "H4" ∶ p, "H2" ∶ b, -------------------------------------- ! ! q using BasicReasoning
Abort.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i (! A ---> A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i (! A ---> A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i (! A ---> A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
Γ ⊢i (! A ---> A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed (! A)
wf_auto2.
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning

Γ ⊢i (! A ---> A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning

Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Γ ⊢i (! A ---> A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning

Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning

well_formed (! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
well_formed (! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
Γ ⊢i A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning

well_formed (! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
well_formed (! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
well_formed A
all: wf_auto2.
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning

Γ ⊢i (! A ---> A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning

well_formed ?A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Γ ⊢i (! A ---> A) ---> ?A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Γ ⊢i ?A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning

well_formed (! A ---> ! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Γ ⊢i (! A ---> ! ! A) ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning

well_formed (! A ---> ! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> ! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Γ ⊢i ?B ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Γ ⊢i (! A ---> ! ! A) ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning

well_formed (! A ---> ! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> ! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning

Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
apply H1.
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning

well_formed (! A ---> ! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! A ---> ! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed (! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
H1: Γ ⊢i (! A ---> ! ! A) ---> ! ! A using BasicReasoning
H2: Γ ⊢i (! A ---> A) ---> ! A ---> ! ! A using BasicReasoning
well_formed A
all: wf_auto2. Defined.
Σ: Signature
p: Pattern

p = foldr patt_imp p []
Σ: Signature
p: Pattern

p = foldr patt_imp p []
reflexivity. Defined.
Σ: Signature
p, q: Pattern
l: list Pattern

foldr patt_imp (p ---> q) l = foldr patt_imp q (l ++ [p])
Σ: Signature
p, q: Pattern
l: list Pattern

foldr patt_imp (p ---> q) l = foldr patt_imp q (l ++ [p])
Σ: Signature
p, q: Pattern
l: list Pattern

foldr patt_imp (p ---> q) l = foldr patt_imp (foldr patt_imp q [p]) l
reflexivity. Defined.
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning

Γ ⊢i r or r ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning
H: Γ ⊢i r or r ---> r using BasicReasoning
Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning

Γ ⊢i r or r ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning

Γ ⊢i (! r ---> r) ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning

well_formed r
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning
H: Γ ⊢i r or r ---> r using BasicReasoning

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i using BasicReasoning

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning
H: Γ ⊢i r or r ---> r using BasicReasoning
= ((p ---> r) ---> (q ---> r) ---> p or q ---> r or r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning
H: Γ ⊢i r or r ---> r using BasicReasoning

= ((p ---> r) ---> (q ---> r) ---> p or q ---> r or r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning
H: Γ ⊢i r or r ---> r using BasicReasoning

= foldr patt_imp ((p ---> r) ---> (q ---> r) ---> p or q ---> r or r) []
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H1: Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r or r using BasicReasoning
H: Γ ⊢i r or r ---> r using BasicReasoning

= foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q])
reflexivity.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp ?g' ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
Pattern.wf ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q])
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
well_formed (r or r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
well_formed ?g'
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
Γ ⊢i r or r ---> ?g' using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp r ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
Pattern.wf ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q])
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
well_formed (r or r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
well_formed r
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp r ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
apply H1.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning

Pattern.wf ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q])
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
well_formed (r or r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
H: Γ ⊢i r or r ---> r using BasicReasoning
H1: Γ ⊢i foldr patt_imp (r or r) ((([] ++ [p ---> r]) ++ [q ---> r]) ++ [p or q]) using BasicReasoning
well_formed r
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> r using i → Γ ⊢i (q ---> r) ---> p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> r using i → Γ ⊢i (q ---> r) ---> p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i

Γ ⊢i (q ---> r) ---> p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
Γ ⊢i ?ϕ₁ ---> (q ---> r) ---> p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i

well_formed p
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
well_formed q
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
well_formed r
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> r using i → Γ ⊢i q ---> r using i → Γ ⊢i p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> r using i → Γ ⊢i q ---> r using i → Γ ⊢i p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i

Γ ⊢i p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
Γ ⊢i ?ϕ₁ ---> p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i

Γ ⊢i (q ---> r) ---> p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i

well_formed p
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
well_formed q
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
well_formed r
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
Γ ⊢i p ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i

well_formed p
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
well_formed q
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
well_formed r
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> r using i → Γ ⊢i q ---> r using i → Γ ⊢i p or q using i → Γ ⊢i r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> r using i → Γ ⊢i q ---> r using i → Γ ⊢i p or q using i → Γ ⊢i r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i

Γ ⊢i r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i
Γ ⊢i ?ϕ₁ ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i

Γ ⊢i p or q ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i

well_formed p
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i
well_formed q
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i
well_formed r
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i
Γ ⊢i p ---> r using i
Σ: Signature
Γ: Theory
p, q, r: Pattern
i: ProofInfo
WFp: well_formed p
WHq: well_formed q
WFr: well_formed r
H: Γ ⊢i p ---> r using i
H0: Γ ⊢i q ---> r using i
H1: Γ ⊢i p or q using i
Γ ⊢i q ---> r using i
all: assumption. Defined.
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo

Pattern.wf l → well_formed a → well_formed g → Γ ⊢i a using i → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo

Pattern.wf l → well_formed a → well_formed g → Γ ⊢i a using i → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf l
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i

Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i

Γ ⊢i foldr patt_imp g [a] ---> foldr patt_imp g [] using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf (a0 :: l)
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i

Γ ⊢i foldr patt_imp g [a] ---> foldr patt_imp g [] using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i

Γ ⊢i (a ---> g) ---> g using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
H: Γ ⊢i a ---> (a ---> g) ---> g using BasicReasoning

Γ ⊢i (a ---> g) ---> g using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
H: Γ ⊢i a ---> (a ---> g) ---> g using BasicReasoning

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
H: Γ ⊢i a ---> (a ---> g) ---> g using BasicReasoning
Γ ⊢i ?ϕ₁ ---> (a ---> g) ---> g using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
H: Γ ⊢i a ---> (a ---> g) ---> g using BasicReasoning

Γ ⊢i a ---> (a ---> g) ---> g using i
Σ: Signature
Γ: Theory
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf []
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
H: Γ ⊢i a ---> (a ---> g) ---> g using BasicReasoning

Γ ⊢i a ---> (a ---> g) ---> g using BasicReasoning
apply H.
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf (a0 :: l)
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfl: Pattern.wf (a0 :: l)
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfl: foldr andb true (map well_formed (a0 :: l))
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfl: well_formed a0 && foldr andb true (map well_formed l)
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfl: well_formed a0 = true ∧ foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i foldr patt_imp g (a :: a0 :: l) ---> foldr patt_imp g (a0 :: l) using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
(* < change a0 and a in the LHS > *)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
apply reorder; wf_auto2.
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning

((a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l) =
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
Γ ⊢i using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning

((a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l) =
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning

((a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l) = foldr patt_imp []
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning

((a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l) = foldr patt_imp ?q ([] ++ [?p])
reflexivity.
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: (h h' g : Pattern) (i : ProofInfo), Pattern.wf [] → Pattern.wf [] → well_formed h → well_formed h' → well_formed g → Γ ⊢i h' ---> h using i → Γ ⊢i foldr patt_imp g ([] ++ [h]) using i → Γ ⊢i foldr patt_imp g ([] ++ [h']) using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: (h h' g : Pattern) (i : ProofInfo), Pattern.wf [] → Pattern.wf [] → well_formed h → well_formed h' → well_formed g → Γ ⊢i h' ---> h using i → Γ ⊢i h ---> g using i → Γ ⊢i h' ---> g using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: (h h' g : Pattern) (i : ProofInfo), Pattern.wf [] → Pattern.wf [] → well_formed h → well_formed h' → well_formed g → Γ ⊢i h' ---> h using i → Γ ⊢i h ---> g using i → Γ ⊢i h' ---> g using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: (g0 : Pattern) (i : ProofInfo), Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed g0 → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> g0 using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> g0 using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Pattern.wf []
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Pattern.wf []
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
well_formed (a0 ---> a ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
well_formed (a ---> a0 ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
well_formed (a0 ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
apply H.
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using BasicReasoning
H0: i : ProofInfo, Pattern.wf [] → Pattern.wf [] → well_formed (a0 ---> a ---> foldr patt_imp g l) → well_formed (a ---> a0 ---> foldr patt_imp g l) → well_formed (a0 ---> foldr patt_imp g l) → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> a ---> foldr patt_imp g l using i → Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i → Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
(* </change a0 and a > *)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
Γ ⊢i ?ϕ₁ ---> (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i ?ϕ₁ ---> (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i ?ϕ₁ ---> (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using BasicReasoning
apply modus_ponens; wf_auto2.
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)

Γ ⊢i a using i
apply Ha.
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

well_formed ?A
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
well_formed (a0 ---> a ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
well_formed (a0 ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> ?A using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Γ ⊢i ?A ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

well_formed (a ---> a0 ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
well_formed (a0 ---> a ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
well_formed (a0 ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i
Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a ---> a0 ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
a0: Pattern
l: list Pattern
a, g: Pattern
i: ProofInfo
wfa0: well_formed a0 = true
wfl: foldr andb true (map well_formed l) = true
wfa: well_formed a
wfg: well_formed g
Ha: Γ ⊢i a using i
IHl: Γ ⊢i (a ---> foldr patt_imp g l) ---> foldr patt_imp g l using i
wfa0l: Pattern.wf (a0 :: l)
H: Γ ⊢i (a ---> a0 ---> foldr patt_imp g l) ---> a0 ---> foldr patt_imp g l using i

Γ ⊢i (a0 ---> a ---> foldr patt_imp g l) ---> a ---> a0 ---> foldr patt_imp g l using BasicReasoning
apply reorder; wf_auto2. Defined.
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo

Pattern.wf l → well_formed a → well_formed g → Γ ⊢i a using i → Γ ⊢i foldr patt_imp g (a :: l) using i → Γ ⊢i foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo

Pattern.wf l → well_formed a → well_formed g → Γ ⊢i a using i → Γ ⊢i foldr patt_imp g (a :: l) using i → Γ ⊢i foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i

Γ ⊢i foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i

Γ ⊢i foldr patt_imp g (a :: l) ---> foldr patt_imp g l using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i

Pattern.wf l
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i
well_formed a
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i
well_formed g
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i
Γ ⊢i a using i
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i

Pattern.wf l
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i
well_formed a
Σ: Signature
Γ: Theory
l: list Pattern
a, g: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFa: well_formed a
WFg: well_formed g
H: Γ ⊢i a using i
H0: Γ ⊢i foldr patt_imp g (a :: l) using i
well_formed g
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo

Γ ⊢i h using i → Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo

Γ ⊢i h using i → Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i → Γ Ⱶ l-------------------------------------- g using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i

Γ Ⱶ l-------------------------------------- g using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed (mlConclusion (Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ (name ∶ h) :: l-------------------------------------- g using i )

well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i )
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i

well_formed g → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed h
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed g
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Γ ⊢i h using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp g (h :: patterns_of l) using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed h
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed g
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Γ ⊢i h using i
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
well_formed g
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Pattern.wf (h :: patterns_of l)
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

well_formed h
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)
Pattern.wf (h :: patterns_of l)
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

well_formed h
abstract (pose (tmp := proj1_sig H); apply proved_impl_wf in tmp; exact tmp).
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Pattern.wf (h :: patterns_of l)
Σ: Signature
Γ: Theory
l: list named_hypothesis
name: string
g, h: Pattern
i: ProofInfo
H: Γ ⊢i h using i
H0: well_formed g → Pattern.wf (h :: patterns_of l) → Γ ⊢i h ---> foldr patt_imp g (patterns_of l) using i
wfg: well_formed g
wfl: Pattern.wf (patterns_of l)

Pattern.wf (h :: patterns_of l)
abstract ( unfold Pattern.wf; simpl; pose (tmp := proj1_sig H); apply proved_impl_wf in tmp; rewrite tmp; simpl; exact wfl ). } Defined. Tactic Notation "mlAdd" constr(n) "as" constr(name') := _failIfUsed name'; match goal with | |- @of_MLGoal ?Sgm (@mkMLGoal ?Sgm ?Ctx ?l ?g ?i) => apply (@MLGoal_add Sgm Ctx l name' g _ i n) end. Tactic Notation "mlAdd" constr(n) := let hyps := _getHypNames in let name := eval cbv in (fresh hyps) in mlAdd n as name.
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i h ---> g using i → Γ ⊢i h using i → Γ ⊢i g using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed h → Γ ⊢i h ---> g using i → Γ ⊢i h using i → Γ ⊢i g using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i

Γ ⊢i g using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i

well_formed g
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i
Γ Ⱶ g using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i

well_formed g
wf_auto2.
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i

Γ Ⱶ g using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i

Γ Ⱶ "H0" ∶ h, -------------------------------------- g using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i

Γ Ⱶ "0" ∶ h ---> g, "H0" ∶ h, -------------------------------------- g using i
Σ: Signature
Γ: Theory
l: list Pattern
g, h: Pattern
i: ProofInfo
WFl: Pattern.wf l
WFg: well_formed g
WFh: well_formed h
H: Γ ⊢i h ---> g using i
H0: Γ ⊢i h using i

Γ Ⱶ "0" ∶ h ---> g, "H0" ∶ h, -------------------------------------- h using i
mlExact "H0". Defined.
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf l1
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h

Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf []
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h

Γ ⊢i foldr patt_imp g l2 ---> h ---> foldr patt_imp g l2 using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf (a :: l1)
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf []
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h

Γ ⊢i foldr patt_imp g l2 ---> h ---> foldr patt_imp g l2 using BasicReasoning
apply P1; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: Pattern.wf (a :: l1)
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: foldr andb true (map well_formed (a :: l1))
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: well_formed a && foldr andb true (map well_formed l1)
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfl1: well_formed a = true ∧ foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Pattern.wf l1 → Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
H1: Γ ⊢i a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

well_formed (a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ h :: l2))
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Γ Ⱶ a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

well_formed (a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ h :: l2))
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ Ⱶ a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ Ⱶ "H0" ∶ foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2), -------------------------------------- a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ Ⱶ "H0" ∶ foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2), "H1" ∶ a, -------------------------------------- foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
mlExact "H0".
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
H1: Γ ⊢i a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp g (l1 ++ l2)) ---> a ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l1, l2: list Pattern
g, h: Pattern
wfa: well_formed a = true
wfl1: foldr andb true (map well_formed l1) = true
wfl2: Pattern.wf l2
wfg: well_formed g
wfh: well_formed h
IHl1: Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
H1: Γ ⊢i a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning

Γ ⊢i a ---> foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ h :: l2) using BasicReasoning
apply H1. Defined.
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp g (l1 ++ l2) using i → Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo

Pattern.wf l1 → Pattern.wf l2 → well_formed g → well_formed h → Γ ⊢i foldr patt_imp g (l1 ++ l2) using i → Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
H: Pattern.wf l1
H0: Pattern.wf l2
H1: well_formed g
H2: well_formed h
H3: Γ ⊢i foldr patt_imp g (l1 ++ l2) using i

Γ ⊢i foldr patt_imp g (l1 ++ [h] ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
H: Pattern.wf l1
H0: Pattern.wf l2
H1: well_formed g
H2: well_formed h
H3: Γ ⊢i foldr patt_imp g (l1 ++ l2) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
H: Pattern.wf l1
H0: Pattern.wf l2
H1: well_formed g
H2: well_formed h
H3: Γ ⊢i foldr patt_imp g (l1 ++ l2) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l1 ++ [h] ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
H: Pattern.wf l1
H0: Pattern.wf l2
H1: well_formed g
H2: well_formed h
H3: Γ ⊢i foldr patt_imp g (l1 ++ l2) using i

Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using i
Σ: Signature
Γ: Theory
l1, l2: list Pattern
g, h: Pattern
i: ProofInfo
H: Pattern.wf l1
H0: Pattern.wf l2
H1: well_formed g
H2: well_formed h
H3: Γ ⊢i foldr patt_imp g (l1 ++ l2) using i

Γ ⊢i foldr patt_imp g (l1 ++ l2) ---> foldr patt_imp g (l1 ++ [h] ++ l2) using BasicReasoning
apply prf_clear_hyp; wf_auto2. Defined.
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo

Γ Ⱶ l1 ++ l2-------------------------------------- g using i → Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo

Γ Ⱶ l1 ++ l2-------------------------------------- g using i → Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: Γ Ⱶ l1 ++ l2-------------------------------------- g using i

Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed (mlConclusion (Γ Ⱶ l1 ++ l2-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ l2-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l1 ++ l2-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l1 ++ l2-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ l2-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l1 ++ l2-------------------------------------- g using i )

well_formed (mlConclusion (Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l1 ++ h :: l2-------------------------------------- g using i )
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (patterns_of (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ l2)) using i

well_formed g → Pattern.wf (patterns_of (l1 ++ h :: l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ h :: l2)) using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (patterns_of (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (patterns_of (l1 ++ h :: l2))

Γ ⊢i foldr patt_imp g (patterns_of (l1 ++ h :: l2)) using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt (l1 ++ h :: l2))

Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ h :: l2)) using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt (l1 ++ h :: l2))

Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt (h :: l2)) using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt (h :: l2)) using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
well_formed g
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
well_formed (nh_patt h)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l2) using i
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
well_formed g
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
well_formed (nh_patt h)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i
well_formed g
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
well_formed (nh_patt h)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

Pattern.wf (map nh_patt l1)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1)

Pattern.wf (map nh_patt l1)
exact wfl1hl2.
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
well_formed (nh_patt h)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l2)

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l2)
exact wfl1hl2.
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

well_formed (nh_patt h)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i
Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)

well_formed (nh_patt h)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
H1: well_formed g → Pattern.wf (map nh_patt (l1 ++ l2)) → Γ ⊢i foldr patt_imp g (map nh_patt (l1 ++ l2)) using i
wfg: well_formed g
wfl1hl2: well_formed (nh_patt h)

well_formed (nh_patt h)
exact wfl1hl2.
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i

Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ nh_patt h :: map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i

Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
Σ: Signature
Γ: Theory
l1, l2: list named_hypothesis
g: Pattern
h: named_hypothesis
i: ProofInfo
wfg: well_formed g
wfl1hl2: Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
H1: well_formed g → Pattern.wf (map nh_patt l1 ++ map nh_patt l2) → Γ ⊢i foldr patt_imp g (map nh_patt l1 ++ map nh_patt l2) using i

Pattern.wf (map nh_patt l1 ++ map nh_patt l2)
exact wfl1hl2. } Defined. Tactic Notation "mlClear" constr(name) := _mlReshapeHypsByName name; apply mlGoal_clear_hyp; _mlReshapeHypsBack.
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

well_formed (a ---> b ---> c ---> b)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
Γ Ⱶ a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

well_formed (a ---> b ---> c ---> b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ a ---> b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, -------------------------------------- b ---> c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, -------------------------------------- c ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, "H2" ∶ c, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H1" ∶ b, -------------------------------------- b using BasicReasoning
mlExact "H1". Defined.
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i p ---> q ---> (p ---> ! q) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i p ---> q ---> (p ---> ! q) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i p ---> q ---> (p ---> ! q) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

(p ---> q ---> (p ---> ! q) ---> ⊥) =
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

(p ---> q ---> (p ---> ! q) ---> ⊥) =
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

foldr patt_imp (p ---> q ---> (p ---> ! q) ---> ⊥) [] =
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

foldr patt_imp ⊥ ((([] ++ [p]) ++ [q]) ++ [p ---> ! q]) =
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

foldr patt_imp ⊥ [p; q; p ---> ! q] =
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

foldr patt_imp ⊥ ([p] ++ [q; p ---> ! q] ++ []) =
reflexivity.
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i foldr patt_imp ⊥ ([p] ++ [q; p ---> ! q] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i foldr patt_imp ⊥ ([p] ++ [p ---> ! q; q] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i p ---> (p ---> ! q) ---> q ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i p ---> (p ---> ! q) ---> ! q using BasicReasoning
apply modus_ponens; wf_auto2. Defined. (* TODO rename or remove *)
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> q ---> (p ---> q ---> r) ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i p ---> q ---> (p ---> q ---> r) ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i p ---> q ---> (p ---> q ---> r) ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

(p ---> q ---> (p ---> q ---> r) ---> r) =
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

(p ---> q ---> (p ---> q ---> r) ---> r) =
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

foldr patt_imp (p ---> q ---> (p ---> q ---> r) ---> r) [] =
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

foldr patt_imp r ((([] ++ [p]) ++ [q]) ++ [p ---> q ---> r]) =
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

foldr patt_imp r [p; q; p ---> q ---> r] =
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

foldr patt_imp r ([p] ++ [q; p ---> q ---> r] ++ []) =
reflexivity.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i foldr patt_imp r ([p] ++ [q; p ---> q ---> r] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i foldr patt_imp r ([p] ++ [p ---> q ---> r; q] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i p ---> (p ---> q ---> r) ---> q ---> r using BasicReasoning
apply modus_ponens; wf_auto2. Defined.
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern

Pattern.wf l → well_formed g → well_formed x → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern

Pattern.wf l → well_formed g → well_formed x → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
wfl: Pattern.wf l
wfg: well_formed g
wfx: well_formed x

Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfx: well_formed x

Γ ⊢i foldr patt_imp g [x] ---> foldr patt_imp g ([] ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfx: well_formed x
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfx: well_formed x

Γ ⊢i foldr patt_imp g [x] ---> foldr patt_imp g ([] ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfx: well_formed x

Γ ⊢i (x ---> g) ---> x ---> g using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
wfl: Pattern.wf []
wfg: well_formed g
wfx: well_formed x

well_formed (x ---> g)
wf_auto2.
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfx: well_formed x
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning

Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfl: Pattern.wf (a :: l)
wfg: well_formed g
wfx: well_formed x
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfl: foldr andb true (map well_formed (a :: l))
wfg: well_formed g
wfx: well_formed x
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfl: well_formed a && foldr andb true (map well_formed l)
wfg: well_formed g
wfx: well_formed x
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfl: well_formed a = true ∧ foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp g (x :: a :: l) ---> foldr patt_imp g ((a :: l) ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (x ---> a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (x ---> a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

((x ---> a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g (l ++ [x])) =
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

((x ---> a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g (l ++ [x])) =
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

foldr patt_imp ((x ---> a ---> foldr patt_imp g l) ---> a ---> foldr patt_imp g (l ++ [x])) [] =
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

foldr patt_imp (foldr patt_imp g (l ++ [x])) (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) =
reflexivity.
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp (foldr patt_imp g (l ++ [x])) (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Pattern.wf (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a])
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
well_formed ?g
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
well_formed (foldr patt_imp g (l ++ [x]))
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Γ ⊢i ?g ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Γ ⊢i foldr patt_imp ?g (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i ?g ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
apply IHl.
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Pattern.wf (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a])
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
well_formed (x ---> foldr patt_imp g l)
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
well_formed (foldr patt_imp g (l ++ [x]))
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Γ ⊢i foldr patt_imp (x ---> foldr patt_imp g l) (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp (x ---> foldr patt_imp g l) (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

foldr patt_imp (x ---> foldr patt_imp g l) (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) =
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

foldr patt_imp (x ---> foldr patt_imp g l) (([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) =
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

foldr patt_imp (foldr patt_imp g l) ((([] ++ [x ---> a ---> foldr patt_imp g l]) ++ [a]) ++ [x]) =
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

foldr patt_imp (foldr patt_imp g l) ([x ---> a ---> foldr patt_imp g l] ++ [a; x] ++ []) =
reflexivity.
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g
wfx: well_formed x
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp (foldr patt_imp g l) ([x ---> a ---> foldr patt_imp g l] ++ [a; x] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g = true
wfx: well_formed x = true
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l) = true

Γ ⊢i foldr patt_imp (foldr patt_imp g l) ([x ---> a ---> foldr patt_imp g l] ++ [x; a] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g = true
wfx: well_formed x = true
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l) = true

Γ ⊢i (x ---> a ---> foldr patt_imp g l) ---> x ---> a ---> foldr patt_imp g l using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
l: list Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfg: well_formed g = true
wfx: well_formed x = true
IHl: Γ ⊢i (x ---> foldr patt_imp g l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
wfal: Pattern.wf (a :: l) = true

well_formed (x ---> a ---> foldr patt_imp g l)
wf_auto2. Defined.
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed x → Γ ⊢i foldr patt_imp g (x :: l) using i → Γ ⊢i foldr patt_imp g (l ++ [x]) using i
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
i: ProofInfo

Pattern.wf l → well_formed g → well_formed x → Γ ⊢i foldr patt_imp g (x :: l) using i → Γ ⊢i foldr patt_imp g (l ++ [x]) using i
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
i: ProofInfo
WFl: Pattern.wf l
WFG: well_formed g
WFx: well_formed x
H: Γ ⊢i foldr patt_imp g (x :: l) using i

Γ ⊢i foldr patt_imp g (l ++ [x]) using i
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
i: ProofInfo
WFl: Pattern.wf l
WFG: well_formed g
WFx: well_formed x
H: Γ ⊢i foldr patt_imp g (x :: l) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
i: ProofInfo
WFl: Pattern.wf l
WFG: well_formed g
WFx: well_formed x
H: Γ ⊢i foldr patt_imp g (x :: l) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (l ++ [x]) using i
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
i: ProofInfo
WFl: Pattern.wf l
WFG: well_formed g
WFx: well_formed x
H: Γ ⊢i foldr patt_imp g (x :: l) using i

Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using i
Σ: Signature
Γ: Theory
g, x: Pattern
l: list Pattern
i: ProofInfo
WFl: Pattern.wf l
WFG: well_formed g
WFx: well_formed x
H: Γ ⊢i foldr patt_imp g (x :: l) using i

Γ ⊢i foldr patt_imp g (x :: l) ---> foldr patt_imp g (l ++ [x]) using BasicReasoning
apply reorder_last_to_head; wf_auto2. Defined. (* Iterated modus ponens. For l = [x₁, ..., xₙ], it says that Γ ⊢i ((x₁ -> ... -> xₙ -> (x₁ -> ... -> xₙ -> r)) -> r) *)
Σ: Signature
Γ: Theory
l: list Pattern
r: Pattern

Pattern.wf l → well_formed r → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
r: Pattern

Pattern.wf l → well_formed r → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
r: Pattern
wfl: Pattern.wf l
wfr: well_formed r

Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
r: Pattern
wfl: Pattern.wf []
wfr: well_formed r

Γ ⊢i foldr patt_imp r ([] ++ [foldr patt_imp r []]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfl: Pattern.wf (a :: l)
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
r: Pattern
wfl: Pattern.wf []
wfr: well_formed r

Γ ⊢i foldr patt_imp r ([] ++ [foldr patt_imp r []]) using BasicReasoning
Σ: Signature
Γ: Theory
r: Pattern
wfl: Pattern.wf []
wfr: well_formed r

Γ ⊢i r ---> r using BasicReasoning
Σ: Signature
Γ: Theory
r: Pattern
wfl: Pattern.wf []
wfr: well_formed r

well_formed r
exact wfr.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfl: Pattern.wf (a :: l)
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning

Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfl: Pattern.wf (a :: l)
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfl: foldr andb true (map well_formed (a :: l))
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfl: well_formed a && foldr andb true (map well_formed l)
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfl: well_formed a = true ∧ foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [foldr patt_imp r (a :: l)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

(a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l])) =
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

(a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l])) =
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

(a ---> foldr patt_imp (foldr patt_imp r [a ---> foldr patt_imp r l]) l) =
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

(a ---> foldr patt_imp ((a ---> foldr patt_imp r l) ---> r) l) =
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

(a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l])) =
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

(a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l])) =
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i using BasicReasoning

Γ ⊢i a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)
= foldr patt_imp r (l ++ [foldr patt_imp r l])
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

= foldr patt_imp r (l ++ [foldr patt_imp r l])
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [foldr patt_imp r l]) using BasicReasoning
wfal: Pattern.wf (a :: l)

= foldr patt_imp (foldr patt_imp r [foldr patt_imp r l]) l
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r [foldr patt_imp r l]) l using BasicReasoning

Γ ⊢i a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning

Γ ⊢i a ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning

well_formed a
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning
well_formed ?B
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning
well_formed (foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]))
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning
Γ ⊢i ?B ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning
Γ ⊢i a ---> ?B using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning

Γ ⊢i ?B ---> foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]) using BasicReasoning
apply reorder_last_to_head; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning

well_formed a
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning
well_formed (foldr patt_imp r ((a ---> foldr patt_imp r l) :: l))
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning
well_formed (foldr patt_imp r (l ++ [a ---> foldr patt_imp r l]))
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning
Γ ⊢i a ---> foldr patt_imp r ((a ---> foldr patt_imp r l) :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning

Γ ⊢i a ---> foldr patt_imp r ((a ---> foldr patt_imp r l) :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfr: well_formed r
wfal: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (foldr patt_imp r l ---> r) l using BasicReasoning

Γ ⊢i a ---> (a ---> foldr patt_imp r l) ---> foldr patt_imp r l using BasicReasoning
apply modus_ponens; wf_auto2. Defined.
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i (p and q ---> r) ---> p ---> q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i (p and q ---> r) ---> p ---> q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i (p and q ---> r) ---> p ---> q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed ((p and q ---> r) ---> p ---> q ---> r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Γ Ⱶ (p and q ---> r) ---> p ---> q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed ((p and q ---> r) ---> p ---> q ---> r)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ (p and q ---> r) ---> p ---> q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ p and q ---> r, -------------------------------------- p ---> q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ p and q ---> r, "H2" ∶ p, -------------------------------------- q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ p and q ---> r, "H2" ∶ p, "H3" ∶ q, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, -------------------------------------- ! (! p or ! q) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! p or ! q, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed (! ! p)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, -------------------------------------- ! ! p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed (! ! p)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, -------------------------------------- ! ! p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, -------------------------------------- ! ! p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)

Γ Ⱶ "H6" ∶ p ---> ! ! p, "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, -------------------------------------- ! ! p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)

Γ Ⱶ "H6" ∶ p ---> ! ! p, "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, -------------------------------------- p using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)

well_formed (! q)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)
Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, -------------------------------------- ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)
Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, "H6" ∶ ! q, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)

well_formed (! q)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, -------------------------------------- ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)
Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, "H6" ∶ ! q, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, -------------------------------------- ! q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, -------------------------------------- ! ! p using BasicReasoning
mlExact "H5".
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, "H6" ∶ ! q, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed (! ! p)
Hwf0: well_formed (! q)

Γ Ⱶ "H0" ∶ ! (! p or ! q) ---> r, "H2" ∶ p, "H3" ∶ q, "H4" ∶ ! ! p ---> ! q, "H5" ∶ ! ! p, "H6" ∶ q ---> ⊥, -------------------------------------- q using BasicReasoning
mlExact "H3". Defined.
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i (p ---> q ---> r) ---> p and q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern

well_formed p → well_formed q → well_formed r → Γ ⊢i (p ---> q ---> r) ---> p and q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i (p ---> q ---> r) ---> p and q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed ((p ---> q ---> r) ---> p and q ---> r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Γ Ⱶ (p ---> q ---> r) ---> p and q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed ((p ---> q ---> r) ---> p and q ---> r)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ (p ---> q ---> r) ---> p and q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ p ---> q ---> r, -------------------------------------- p and q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed p
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

well_formed p
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p

Γ Ⱶ "H2" ∶ p and q ---> p, "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p

Γ Ⱶ "H2" ∶ p and q ---> p, "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, -------------------------------------- p and q using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p

well_formed q
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p

well_formed q
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q

Γ Ⱶ "H4" ∶ p and q ---> q, "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q

Γ Ⱶ "H4" ∶ p and q ---> q, "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, -------------------------------------- p and q using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, -------------------------------------- r using BasicReasoning
(* This pattern is basically an "apply ... in" *)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q

well_formed (q ---> r)
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, -------------------------------------- q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, "H4" ∶ q ---> r, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q

well_formed (q ---> r)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, -------------------------------------- q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)
Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, "H4" ∶ q ---> r, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, -------------------------------------- q ---> r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, -------------------------------------- p using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, "H4" ∶ q ---> r, -------------------------------------- r using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
Hwf: well_formed p
Hwf0: well_formed q
Hwf1: well_formed (q ---> r)

Γ Ⱶ "H0" ∶ p ---> q ---> r, "H1" ∶ p and q, "H2" ∶ p, "H3" ∶ q, "H4" ∶ q ---> r, -------------------------------------- q using BasicReasoning
mlExact "H3". Defined.
Σ: Signature
Γ: Theory
l: list Pattern
p, q, r: Pattern

Pattern.wf l → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
p, q, r: Pattern

Pattern.wf l → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
l: list Pattern
p, q, r: Pattern
wfl: Pattern.wf l
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfl: Pattern.wf []
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i foldr patt_imp r ([] ++ [p]) ---> foldr patt_imp r ([] ++ [q]) ---> foldr patt_imp r ([] ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfl: Pattern.wf (a :: l)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfl: Pattern.wf []
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i foldr patt_imp r ([] ++ [p]) ---> foldr patt_imp r ([] ++ [q]) ---> foldr patt_imp r ([] ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfl: Pattern.wf []
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i (p ---> r) ---> (q ---> r) ---> p or q ---> r using BasicReasoning
apply prf_disj_elim; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfl: Pattern.wf (a :: l)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning

Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfl: Pattern.wf (a :: l)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfl: foldr andb true (map well_formed (a :: l))
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfl: well_formed a && foldr andb true (map well_formed l)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfl: well_formed a = true ∧ foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i foldr patt_imp r ((a :: l) ++ [p]) ---> foldr patt_imp r ((a :: l) ++ [q]) ---> foldr patt_imp r ((a :: l) ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ ⊢i (a ---> foldr patt_imp r (l ++ [p])) ---> (a ---> foldr patt_imp r (l ++ [q])) ---> a ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

well_formed ((a ---> foldr patt_imp r (l ++ [p])) ---> (a ---> foldr patt_imp r (l ++ [q])) ---> a ---> foldr patt_imp r (l ++ [p or q]))
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Γ Ⱶ (a ---> foldr patt_imp r (l ++ [p])) ---> (a ---> foldr patt_imp r (l ++ [q])) ---> a ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

well_formed ((a ---> foldr patt_imp r (l ++ [p])) ---> (a ---> foldr patt_imp r (l ++ [q])) ---> a ---> foldr patt_imp r (l ++ [p or q]))
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ Ⱶ (a ---> foldr patt_imp r (l ++ [p])) ---> (a ---> foldr patt_imp r (l ++ [q])) ---> a ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), -------------------------------------- (a ---> foldr patt_imp r (l ++ [q])) ---> a ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), -------------------------------------- a ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

well_formed (foldr patt_imp r (l ++ [p]))
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, -------------------------------------- foldr patt_imp r (l ++ [p]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)

well_formed (foldr patt_imp r (l ++ [p]))
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, -------------------------------------- foldr patt_imp r (l ++ [p]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, -------------------------------------- foldr patt_imp r (l ++ [p]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, -------------------------------------- a using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))

well_formed (foldr patt_imp r (l ++ [q]))
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), -------------------------------------- foldr patt_imp r (l ++ [q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))

well_formed (foldr patt_imp r (l ++ [q]))
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), -------------------------------------- foldr patt_imp r (l ++ [q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), -------------------------------------- foldr patt_imp r (l ++ [q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), -------------------------------------- a using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))

well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), -------------------------------------- foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), "H6" ∶ foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))

well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), -------------------------------------- foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))
Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), "H6" ∶ foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), -------------------------------------- foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), -------------------------------------- foldr patt_imp r (l ++ [p]) using BasicReasoning
mlExact "H4".
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), "H6" ∶ foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), -------------------------------------- foldr patt_imp r (l ++ [p or q]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl: foldr andb true (map well_formed l) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl: Γ ⊢i foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]) using BasicReasoning
wfal: Pattern.wf (a :: l)
Hwf: well_formed (foldr patt_imp r (l ++ [p]))
Hwf0: well_formed (foldr patt_imp r (l ++ [q]))
Hwf1: well_formed (foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]))

Γ Ⱶ "H3" ∶ foldr patt_imp r (l ++ [p]) ---> foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), "H0" ∶ a ---> foldr patt_imp r (l ++ [p]), "H1" ∶ a ---> foldr patt_imp r (l ++ [q]), "H2" ∶ a, "H4" ∶ foldr patt_imp r (l ++ [p]), "H5" ∶ foldr patt_imp r (l ++ [q]), "H6" ∶ foldr patt_imp r (l ++ [q]) ---> foldr patt_imp r (l ++ [p or q]), -------------------------------------- foldr patt_imp r (l ++ [q]) using BasicReasoning
mlExact "H5". Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern

Pattern.wf l₁ → Pattern.wf l₂ → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern

Pattern.wf l₁ → Pattern.wf l₂ → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
wfl₁: Pattern.wf l₁
wfl₂: Pattern.wf l₂
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
Σ: Signature
Γ: Theory
l₂: list Pattern
p, q, r: Pattern
wfl₂: Pattern.wf l₂
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r

l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfl₂: Pattern.wf []
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
l₁: list Pattern
wfl₁: Pattern.wf l₁

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ []) ---> foldr patt_imp r (l₁ ++ [q] ++ []) ---> foldr patt_imp r (l₁ ++ [p or q] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfl₂: Pattern.wf (a :: l₂)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfl₂: Pattern.wf []
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
l₁: list Pattern
wfl₁: Pattern.wf l₁

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ []) ---> foldr patt_imp r (l₁ ++ [q] ++ []) ---> foldr patt_imp r (l₁ ++ [p or q] ++ []) using BasicReasoning
Σ: Signature
Γ: Theory
p, q, r: Pattern
wfl₂: Pattern.wf []
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
l₁: list Pattern
wfl₁: Pattern.wf l₁

Γ ⊢i foldr patt_imp r (l₁ ++ [p]) ---> foldr patt_imp r (l₁ ++ [q]) ---> foldr patt_imp r (l₁ ++ [p or q]) using BasicReasoning
apply prf_disj_elim_iter; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfl₂: Pattern.wf (a :: l₂)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfl₂: Pattern.wf (a :: l₂)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfl₂: foldr andb true (map well_formed (a :: l₂))
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfl₂: well_formed a && foldr andb true (map well_formed l₂)
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfl₂: well_formed a = true ∧ foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ a :: l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂) using BasicReasoning
(* Or we can swap p and a (move a to the end of l_1) *)
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(A ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(A ---> B ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(A ---> B ---> C) =
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i A ---> B ---> C using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(A ---> B ---> C) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(A ---> B ---> C) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (A ---> B ---> C) [] =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (B ---> C) ([] ++ [A]) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp C (([] ++ [A]) ++ [B]) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp C [A; B] =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp C [foldr patt_imp r (l₁ ++ p :: a :: l₂); B] =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp C [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)] =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)] =
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)] using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Pattern.wf [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)]
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed ?g
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i ?g ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp ?g [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)] using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i ?g ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(?g ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(?g ---> foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(?g ---> foldr patt_imp r (l₁ ++ [p or q; a] ++ l₂)) =
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i ?g ---> foldr patt_imp r (l₁ ++ [p or q; a] ++ l₂) using BasicReasoning
apply prf_reorder_iter; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Pattern.wf [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)]
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ [a; p or q] ++ l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ [a; p or q] ++ l₂)) [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)] using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ [a; p or q] ++ l₂)) [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)] using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) [] =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) (([] ++ [foldr patt_imp r (l₁ ++ p :: a :: l₂)]) ++ [foldr patt_imp r (l₁ ++ q :: a :: l₂)]) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ q :: a :: l₂)] =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([foldr patt_imp r (l₁ ++ p :: a :: l₂)] ++ [foldr patt_imp r (l₁ ++ q :: a :: l₂)]) =
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([foldr patt_imp r (l₁ ++ p :: a :: l₂)] ++ [foldr patt_imp r (l₁ ++ q :: a :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Pattern.wf [foldr patt_imp r (l₁ ++ p :: a :: l₂)]
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Pattern.wf []
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: q :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ q :: a :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: q :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([foldr patt_imp r (l₁ ++ p :: a :: l₂)] ++ [foldr patt_imp r (l₁ ++ a :: q :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ q :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: q :: l₂) using BasicReasoning
apply prf_reorder_iter; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Pattern.wf [foldr patt_imp r (l₁ ++ p :: a :: l₂)]
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Pattern.wf []
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: q :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ q :: a :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([foldr patt_imp r (l₁ ++ p :: a :: l₂)] ++ [foldr patt_imp r (l₁ ++ a :: q :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([foldr patt_imp r (l₁ ++ p :: a :: l₂)] ++ [foldr patt_imp r (l₁ ++ a :: q :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([foldr patt_imp r (l₁ ++ p :: a :: l₂)] ++ [foldr patt_imp r (l₁ ++ a :: q :: l₂)]) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([foldr patt_imp r (l₁ ++ p :: a :: l₂)] ++ [foldr patt_imp r (l₁ ++ a :: q :: l₂)]) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([] ++ [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ a :: q :: l₂)]) =
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([] ++ [foldr patt_imp r (l₁ ++ p :: a :: l₂); foldr patt_imp r (l₁ ++ a :: q :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Pattern.wf []
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Pattern.wf [foldr patt_imp r (l₁ ++ a :: q :: l₂)]
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: p :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ p :: a :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: p :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([] ++ [foldr patt_imp r (l₁ ++ a :: p :: l₂); foldr patt_imp r (l₁ ++ a :: q :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ p :: a :: l₂) ---> foldr patt_imp r (l₁ ++ a :: p :: l₂) using BasicReasoning
apply prf_reorder_iter; wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Pattern.wf []
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Pattern.wf [foldr patt_imp r (l₁ ++ a :: q :: l₂)]
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: p :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ p :: a :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
well_formed (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂))
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([] ++ [foldr patt_imp r (l₁ ++ a :: p :: l₂); foldr patt_imp r (l₁ ++ a :: q :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp (foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) ([] ++ [foldr patt_imp r (l₁ ++ a :: p :: l₂); foldr patt_imp r (l₁ ++ a :: q :: l₂)]) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp r (l₁ ++ a :: p :: l₂) ---> foldr patt_imp r (l₁ ++ a :: q :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂) using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r (l₁ ++ a :: p :: l₂) ---> foldr patt_imp r (l₁ ++ a :: q :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)
Γ ⊢i using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r (l₁ ++ a :: p :: l₂) ---> foldr patt_imp r (l₁ ++ a :: q :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r ((l₁ ++ [a]) ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ a :: q :: l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r ((l₁ ++ [a]) ++ [p] ++ l₂) ---> foldr patt_imp r ((l₁ ++ [a]) ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ a :: (p or q) :: l₂)) =
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

(foldr patt_imp r ((l₁ ++ [a]) ++ [p] ++ l₂) ---> foldr patt_imp r ((l₁ ++ [a]) ++ [q] ++ l₂) ---> foldr patt_imp r ((l₁ ++ [a]) ++ [p or q] ++ l₂)) =
reflexivity.
Σ: Signature
Γ: Theory
a: Pattern
l₂: list Pattern
p, q, r: Pattern
wfa: well_formed a = true
wfl₂: foldr andb true (map well_formed l₂) = true
wfp: well_formed p
wfq: well_formed q
wfr: well_formed r
IHl₂: Pattern.wf l₂ → l₁ : list Pattern, Pattern.wf l₁ → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
l₁: list Pattern
wfl₁: Pattern.wf l₁
wfal₂: Pattern.wf (a :: l₂)
A: Pattern
HeqA: A = foldr patt_imp r (l₁ ++ p :: a :: l₂)
B: Pattern
HeqB: B = foldr patt_imp r (l₁ ++ q :: a :: l₂)
C: Pattern
HeqC: C = foldr patt_imp r (l₁ ++ (p or q) :: a :: l₂)

Γ ⊢i foldr patt_imp r ((l₁ ++ [a]) ++ [p] ++ l₂) ---> foldr patt_imp r ((l₁ ++ [a]) ++ [q] ++ l₂) ---> foldr patt_imp r ((l₁ ++ [a]) ++ [p or q] ++ l₂) using BasicReasoning
apply IHl₂; wf_auto2. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i → Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i → Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i

Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) ---> foldr patt_imp r (l₁ ++ [q] ++ l₂) ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using BasicReasoning
apply prf_disj_elim_iter_2; wf_auto2. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i → Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i → Γ ⊢i foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo

Pattern.wf l₁ → Pattern.wf l₂ → well_formed p → well_formed q → well_formed r → Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i → Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i → Γ ⊢i foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
H0: Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i

Γ ⊢i foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
H0: Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
H0: Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
H0: Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp r (l₁ ++ [p or q] ++ l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
H0: Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i

Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
apply H.
Σ: Signature
Γ: Theory
l₁, l₂: list Pattern
p, q, r: Pattern
i: ProofInfo
WFl1: Pattern.wf l₁
WFl2: Pattern.wf l₂
WFp: well_formed p
WFq: well_formed q
WFr: well_formed r
H: Γ ⊢i foldr patt_imp r (l₁ ++ [p] ++ l₂) using i
H0: Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i

Γ ⊢i foldr patt_imp r (l₁ ++ [q] ++ l₂) using i
apply H0. Defined.
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo

Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i → Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i → Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo

Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i → Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i → Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
H1: Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i
H2: Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i

Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
H1: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i ))) → mlTheory (Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i ))) using mlInfo (Γ Ⱶ l₁ ++ (pn ∶ p, ) ++ l₂-------------------------------------- r using i )
H2: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i ))) → mlTheory (Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i ))) using mlInfo (Γ Ⱶ l₁ ++ (qn ∶ q, ) ++ l₂-------------------------------------- r using i )

well_formed (mlConclusion (Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i ))) → mlTheory (Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i ))) using mlInfo (Γ Ⱶ l₁ ++ (pqn ∶ p or q, ) ++ l₂-------------------------------------- r using i )
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
H1: well_formed r → Pattern.wf (patterns_of (l₁ ++ (pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (patterns_of (l₁ ++ (pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (patterns_of (l₁ ++ (qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (patterns_of (l₁ ++ (qn ∶ q) :: l₂)) using i

well_formed r → Pattern.wf (patterns_of (l₁ ++ (pqn ∶ p or q) :: l₂)) → Γ ⊢i foldr patt_imp r (patterns_of (l₁ ++ (pqn ∶ p or q) :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
H1: well_formed r → Pattern.wf (patterns_of (l₁ ++ (pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (patterns_of (l₁ ++ (pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (patterns_of (l₁ ++ (qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (patterns_of (l₁ ++ (qn ∶ q) :: l₂)) using i
wfr: well_formed r
Hwf: Pattern.wf (patterns_of (l₁ ++ (pqn ∶ p or q) :: l₂))

Γ ⊢i foldr patt_imp r (patterns_of (l₁ ++ (pqn ∶ p or q) :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
H1: well_formed r → Pattern.wf (map nh_patt (l₁ ++ (pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt (l₁ ++ (pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt (l₁ ++ (qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt (l₁ ++ (qn ∶ q) :: l₂)) using i
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))

Γ ⊢i foldr patt_imp r (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
H1: well_formed r → Pattern.wf (map nh_patt (l₁ ++ (pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt (l₁ ++ (pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt (l₁ ++ (qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt (l₁ ++ (qn ∶ q) :: l₂)) using i
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))

Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
H2: well_formed r → Pattern.wf (map nh_patt (l₁ ++ (qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt (l₁ ++ (qn ∶ q) :: l₂)) using i
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i

Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i

Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂)) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed p
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed q
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed r
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ [p] ++ (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ [q] ++ (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed p
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed q
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed r
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ [p] ++ (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed r
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed p
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed q
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed r
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed r
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
well_formed r
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
Hwf: Pattern.wf (map nh_patt (l₁ ++ (pqn ∶ p or q) :: l₂))
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
well_formed p
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
well_formed q
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf (map nh_patt l₁)
abstract (apply wfl₁hl₂_proj_l₁ in Hwf; exact Hwf).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
well_formed p
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
well_formed q
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
abstract (apply wfl₁hl₂_proj_l₂ in Hwf; exact Hwf).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

well_formed p
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
well_formed q
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

well_formed p
abstract (apply wfl₁hl₂_proj_h in Hwf; wf_auto2).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

well_formed q
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

well_formed q
abstract (apply wfl₁hl₂_proj_h in Hwf; wf_auto2).
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ p or q))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ p or q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ p or q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (map nh_patt ((pn ∶ p) :: l₂)) = true
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ (p ---> ⊥) ---> q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ (p ---> ⊥) ---> q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (map nh_patt ((pn ∶ p) :: l₂)) = true
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ (p ---> ⊥) ---> q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ (p ---> ⊥) ---> q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (p :: map nh_patt l₂) = true
wf_auto2.
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ p or q))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ p or q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂))
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ p or q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ p or q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (map nh_patt ((qn ∶ q) :: l₂)) = true
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ (p ---> ⊥) ---> q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ (p ---> ⊥) ---> q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (map nh_patt ((qn ∶ q) :: l₂)) = true
Σ: Signature
Γ: Theory
l₁, l₂: list named_hypothesis
pn: string
p: Pattern
qn: string
q: Pattern
pqn: string
r: Pattern
i: ProofInfo
wfr: well_formed r
H1: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((pn ∶ p) :: l₂)) using i
H2: well_formed r → Pattern.wf (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) → Γ ⊢i foldr patt_imp r (map nh_patt l₁ ++ map nh_patt ((qn ∶ q) :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((pqn ∶ (p ---> ⊥) ---> q) :: l₂))
H: Pattern.wf (map nh_patt l₁)
H0: well_formed (nh_patt (pqn ∶ (p ---> ⊥) ---> q))
H3: Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)

Pattern.wf (q :: map nh_patt l₂) = true
wf_auto2. } Defined. Tactic Notation "mlDestructOr" constr(name) "as" constr(name1) constr(name2) := _failIfUsed name1; _failIfUsed name2; match goal with | |- @of_MLGoal ?Sgm (@mkMLGoal ?Sgm ?Ctx ?l ?g ?i) => let Htd := fresh "Htd" in eapply cast_proof_ml_hyps; f_equal; _mlReshapeHypsByName name; apply MLGoal_disj_elim with (pqn := name) (pn := name1) (qn := name2); _mlReshapeHypsBack; simpl end. Tactic Notation "mlDestructOr" constr(name) := let hyps := _getHypNames in let name0 := eval cbv in (fresh hyps) in let name1 := eval cbv in (fresh (name0 :: hyps)) in mlDestructOr name as name0 name1.
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed p → well_formed q → well_formed c → Γ ⊢i a ---> p ---> b ---> c using i → Γ ⊢i a ---> q ---> b ---> c using i → Γ ⊢i a ---> p or q ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed p → well_formed q → well_formed c → Γ ⊢i a ---> p ---> b ---> c using i → Γ ⊢i a ---> q ---> b ---> c using i → Γ ⊢i a ---> p or q ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ ⊢i a ---> p or q ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

well_formed (a ---> p or q ---> b ---> c)
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i
Γ Ⱶ a ---> p or q ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

well_formed (a ---> p or q ---> b ---> c)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ Ⱶ a ---> p or q ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ Ⱶ "H0" ∶ a, -------------------------------------- p or q ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ Ⱶ "H0" ∶ a, "H1" ∶ p or q, -------------------------------------- b ---> c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ Ⱶ "H0" ∶ a, "H1" ∶ p or q, "H2" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ Ⱶ "H0" ∶ a, "0" ∶ p, "H2" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i
Γ Ⱶ "H0" ∶ a, "1" ∶ q, "H2" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ Ⱶ "H0" ∶ a, "0" ∶ p, "H2" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ ⊢i a ---> p ---> b ---> c using i
apply H.
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ Ⱶ "H0" ∶ a, "1" ∶ q, "H2" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, p, q, c: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
WFp: well_formed p
WFq: well_formed q
WFc: well_formed c
H: Γ ⊢i a ---> p ---> b ---> c using i
H0: Γ ⊢i a ---> q ---> b ---> c using i

Γ ⊢i a ---> q ---> b ---> c using i
apply H0. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A ---> B using i → Γ ⊢i B ---> A using i → Γ ⊢i A <---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A ---> B using i → Γ ⊢i B ---> A using i → Γ ⊢i A <---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimplB: Γ ⊢i A ---> B using i
BimplA: Γ ⊢i B ---> A using i

Γ ⊢i A <---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
AimplB: Γ ⊢i A ---> B using i
BimplA: Γ ⊢i B ---> A using i

Γ ⊢i (A ---> B) and (B ---> A) using i
apply conj_intro_meta; try_wfauto2; assumption. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A <---> B using i → Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A <---> B using i → Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A <---> B using i

Γ ⊢i A ---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i (A ---> B) and (B ---> A) using i

Γ ⊢i A ---> B using i
apply pf_conj_elim_l_meta in H; try_wfauto2; assumption. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A <---> B using i → Γ ⊢i B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A <---> B using i → Γ ⊢i B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A <---> B using i

Γ ⊢i B ---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i (A ---> B) and (B ---> A) using i

Γ ⊢i B ---> A using i
apply pf_conj_elim_r_meta in H; try_wfauto2; assumption. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → (Γ ⊢i A <---> B using i → (Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i)) * ((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i) → Γ ⊢i A <---> B using i)
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → (Γ ⊢i A <---> B using i → (Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i)) * ((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i) → Γ ⊢i A <---> B using i)
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B

((Γ ⊢i A <---> B using i → (Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i)) * ((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i) → Γ ⊢i A <---> B using i))%type
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A <---> B using i

((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: ((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type
Γ ⊢i A <---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A <---> B using i

((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A <---> B using i
H1: Γ ⊢i A ---> B using i

((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A <---> B using i
H1: Γ ⊢i A ---> B using i
H2: Γ ⊢i B ---> A using i

((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type
split; assumption.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: ((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type

Γ ⊢i A <---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: ((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type

Γ ⊢i A <---> B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H1: Γ ⊢i A ---> B using i
H2: Γ ⊢i B ---> A using i

Γ ⊢i A <---> B using i
apply pf_iff_split; assumption. } Defined.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A <---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A <---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
WFA: well_formed A

Γ ⊢i A <---> A using BasicReasoning
apply pf_iff_split; try_wfauto2; apply A_impl_A; assumption. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A <---> B using i → Γ ⊢i B <---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A <---> B using i → Γ ⊢i B <---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
H: Γ ⊢i A <---> B using i

Γ ⊢i B <---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
H, H2: Γ ⊢i A <---> B using i

Γ ⊢i B <---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
H: Γ ⊢i A <---> B using i
H2: Γ ⊢i B ---> A using i

Γ ⊢i B <---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
H1: Γ ⊢i A <---> B using i
H2: Γ ⊢i B ---> A using i

Γ ⊢i B <---> A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
H1: Γ ⊢i A ---> B using i
H2: Γ ⊢i B ---> A using i

Γ ⊢i B <---> A using i
apply pf_iff_split; try_wfauto2; assumption. Defined.
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A <---> B using i → Γ ⊢i B <---> C using i → Γ ⊢i A <---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A <---> B using i → Γ ⊢i B <---> C using i → Γ ⊢i A <---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AeqB: Γ ⊢i A <---> B using i
BeqC: Γ ⊢i B <---> C using i

Γ ⊢i A <---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AeqB: ((Γ ⊢i A ---> B using i) * (Γ ⊢i B ---> A using i))%type
BeqC: Γ ⊢i B <---> C using i

Γ ⊢i A <---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BeqC: Γ ⊢i B <---> C using i

Γ ⊢i A <---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BeqC: ((Γ ⊢i B ---> C using i) * (Γ ⊢i C ---> B using i))%type

Γ ⊢i A <---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

Γ ⊢i A <---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

((Γ ⊢i A ---> C using i) * (Γ ⊢i C ---> A using i))%type
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

Γ ⊢i A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
Γ ⊢i C ---> A using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

Γ ⊢i A ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

well_formed A
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed ?B
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed C
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
Γ ⊢i A ---> ?B using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
Γ ⊢i ?B ---> C using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

well_formed A
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed B
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed C
1-3: wf_auto2.
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

Γ ⊢i C ---> A using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

Γ ⊢i C ---> A using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

well_formed C
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed ?B
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed A
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
Γ ⊢i C ---> ?B using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
Γ ⊢i ?B ---> A using i
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i

well_formed C
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed B
Σ: Signature
Γ: Theory
A, B, C: Pattern
i: ProofInfo
wfA: well_formed A
wfB: well_formed B
wfC: well_formed C
AimpB: Γ ⊢i A ---> B using i
BimpA: Γ ⊢i B ---> A using i
BimpC: Γ ⊢i B ---> C using i
CimpB: Γ ⊢i C ---> B using i
well_formed A
1-3: wf_auto2. } Defined.
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo

well_formed a → well_formed b → Γ ⊢i b using i → Γ ⊢i a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo

well_formed a → well_formed b → Γ ⊢i b using i → Γ ⊢i a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
H: Γ ⊢i b using i
Γ ⊢i ?ϕ₁ ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i b ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b: Pattern
i: ProofInfo
WFa: well_formed a
WFb: well_formed b
H: Γ ⊢i b using i

Γ ⊢i b ---> a ---> b using BasicReasoning
apply P1; wf_auto2. Defined.
Σ: Signature
Γ: Theory
p1, p2: Pattern

well_formed p1 → well_formed p2 → Γ ⊢i ! (! p1 ---> p2) <---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern

well_formed p1 → well_formed p2 → Γ ⊢i ! (! p1 ---> p2) <---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i ! (! p1 ---> p2) <---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (! p1 ---> p2) ---> ! p1 and ! p2)
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
well_formed (! p1 and ! p2 ---> ! (! p1 ---> p2))
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i ! (! p1 ---> p2) ---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i ! p1 and ! p2 ---> ! (! p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (! p1 ---> p2) ---> ! p1 and ! p2)
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! p1 and ! p2 ---> ! (! p1 ---> p2))
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i ! (! p1 ---> p2) ---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i ! p1 and ! p2 ---> ! (! p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! p1 and ! p2 ---> ! (! p1 ---> p2))
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i ! (! p1 ---> p2) ---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i ! p1 and ! p2 ---> ! (! p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i ! (! p1 ---> p2) ---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (! p1 ---> p2) ---> ! p1 and ! p2)
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ Ⱶ ! (! p1 ---> p2) ---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (! p1 ---> p2) ---> ! p1 and ! p2)
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ ! (! p1 ---> p2) ---> ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! (! p1 ---> p2), -------------------------------------- ! p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! (! p1 ---> p2), "H1" ∶ ! ! p1 or ! ! p2, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 or ! ! p2, -------------------------------------- ! p1 ---> p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 or ! ! p2, "H2" ∶ ! p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! ! p1 ---> ! ! p2, "H2" ∶ ! p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! ! p1 ---> ! ! p2, "H2" ∶ ! p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! ! p1 ---> ! ! p2, "H2" ∶ ! p1, -------------------------------------- ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! ! p1 ---> ! ! p2, "H2" ∶ ! p1, -------------------------------------- ! ! ! p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ ! p1 ---> ! ! ! p1, "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! ! p1 ---> ! ! p2, "H2" ∶ ! p1, -------------------------------------- ! ! ! p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ ! p1 ---> ! ! ! p1, "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (! p1 ---> p2) ---> ⊥, "H1" ∶ ! ! ! p1 ---> ! ! p2, "H2" ∶ ! p1, -------------------------------------- ! p1 using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i ! p1 and ! p2 ---> ! (! p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! p1 and ! p2 ---> ! (! p1 ---> p2))
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ Ⱶ ! p1 and ! p2 ---> ! (! p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! p1 and ! p2 ---> ! (! p1 ---> p2))
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ ! p1 and ! p2 ---> ! (! p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! p1 and ! p2, -------------------------------------- ! (! p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! p1 and ! p2, "H1" ∶ ! p1 ---> p2, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! (! ! p1 or ! ! p2), "H1" ∶ ! p1 ---> p2, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! ! p1 or ! ! p2 ---> ⊥, "H1" ∶ ! p1 ---> p2, -------------------------------------- ! ! p1 or ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (! ! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ ! p1 ---> p2, -------------------------------------- ! ! ! p1 ---> ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (! ! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ ! p1 ---> p2, "H2" ∶ ! ! ! p1, -------------------------------------- ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ ! p1 ---> p2, "H2" ∶ ! ! ! p1, -------------------------------------- ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ ! p1 ---> p2, "H2" ∶ ! ! ! p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ ! p1 ---> p2, "H2" ∶ ! ! ! p1, -------------------------------------- ! p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ ! ! ! p1 ---> ! p1, "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ ! p1 ---> p2, "H2" ∶ ! ! ! p1, -------------------------------------- ! p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ ! ! ! p1 ---> ! p1, "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ ! p1 ---> p2, "H2" ∶ ! ! ! p1, -------------------------------------- ! ! ! p1 using BasicReasoning
mlExact "H2". Defined.
Σ: Signature
Γ: Theory
p1, p2: Pattern

well_formed p1 → well_formed p2 → Γ ⊢i ! (p1 ---> p2) <---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern

well_formed p1 → well_formed p2 → Γ ⊢i ! (p1 ---> p2) <---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i ! (p1 ---> p2) <---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (p1 ---> p2) ---> p1 and ! p2)
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
well_formed (p1 and ! p2 ---> ! (p1 ---> p2))
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i ! (p1 ---> p2) ---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i p1 and ! p2 ---> ! (p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (p1 ---> p2) ---> p1 and ! p2)
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (p1 and ! p2 ---> ! (p1 ---> p2))
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i ! (p1 ---> p2) ---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i p1 and ! p2 ---> ! (p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (p1 and ! p2 ---> ! (p1 ---> p2))
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i ! (p1 ---> p2) ---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ ⊢i p1 and ! p2 ---> ! (p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i ! (p1 ---> p2) ---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (p1 ---> p2) ---> p1 and ! p2)
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ Ⱶ ! (p1 ---> p2) ---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (! (p1 ---> p2) ---> p1 and ! p2)
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ ! (p1 ---> p2) ---> p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! (p1 ---> p2), -------------------------------------- p1 and ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! (p1 ---> p2), "H1" ∶ ! p1 or ! ! p2, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! p1 or ! ! p2, -------------------------------------- p1 ---> p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! p1 or ! ! p2, "H2" ∶ p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 ---> ! ! p2, "H2" ∶ p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 ---> ! ! p2, "H2" ∶ p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 ---> ! ! p2, "H2" ∶ p1, -------------------------------------- ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 ---> ! ! p2, "H2" ∶ p1, -------------------------------------- ! ! p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ p1 ---> ! ! p1, "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 ---> ! ! p2, "H2" ∶ p1, -------------------------------------- ! ! p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ p1 ---> ! ! p1, "H3" ∶ ! ! p2 ---> p2, "H0" ∶ (p1 ---> p2) ---> ⊥, "H1" ∶ ! ! p1 ---> ! ! p2, "H2" ∶ p1, -------------------------------------- p1 using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ ⊢i p1 and ! p2 ---> ! (p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (p1 and ! p2 ---> ! (p1 ---> p2))
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2
Γ Ⱶ p1 and ! p2 ---> ! (p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

well_formed (p1 and ! p2 ---> ! (p1 ---> p2))
wf_auto2.
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ p1 and ! p2 ---> ! (p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ p1 and ! p2, -------------------------------------- ! (p1 ---> p2) using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ p1 and ! p2, "H1" ∶ p1 ---> p2, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ ! p1 or ! ! p2 ---> ⊥, "H1" ∶ p1 ---> p2, -------------------------------------- ! p1 or ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ p1 ---> p2, -------------------------------------- ! ! p1 ---> ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H0" ∶ (! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ p1 ---> p2, "H2" ∶ ! ! p1, -------------------------------------- ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ p1 ---> p2, "H2" ∶ ! ! p1, -------------------------------------- ! ! p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ p1 ---> p2, "H2" ∶ ! ! p1, -------------------------------------- p2 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ p1 ---> p2, "H2" ∶ ! ! p1, -------------------------------------- p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ ! ! p1 ---> p1, "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ p1 ---> p2, "H2" ∶ ! ! p1, -------------------------------------- p1 using BasicReasoning
Σ: Signature
Γ: Theory
p1, p2: Pattern
wfp1: well_formed p1
wfp2: well_formed p2

Γ Ⱶ "H4" ∶ ! ! p1 ---> p1, "H3" ∶ p2 ---> ! ! p2, "H0" ∶ (! ! p1 ---> ! ! p2) ---> ⊥, "H1" ∶ p1 ---> p2, "H2" ∶ ! ! p1, -------------------------------------- ! ! p1 using BasicReasoning
mlExact "H2". Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
Γ ⊢i ?ϕ₁ ---> B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
exact H.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i A ---> B ---> A and B using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i A ---> B ---> A and B using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed A
wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed B
wf_auto2. } Defined.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A using i → Γ ⊢i A and B ---> C using i → Γ ⊢i B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A using i → Γ ⊢i A and B ---> C using i → Γ ⊢i B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

Γ ⊢i B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
well_formed (A and B)
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
well_formed C
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i B ---> A and B using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i A and B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed B
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed (A and B)
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
well_formed C
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i B ---> A and B using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i A and B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed (A and B)
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed C
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i B ---> A and B using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i A and B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed C
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

Γ ⊢i B ---> A and B using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i A and B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

Γ ⊢i A and B ---> C using i
exact H0.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

Γ ⊢i B ---> A and B using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed A
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed A
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i
Γ ⊢i A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

well_formed B
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i A and B ---> C using i

Γ ⊢i A using i
exact H. Defined.
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> B ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern

well_formed A → well_formed B → Γ ⊢i A ---> B ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i A ---> B ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (B and A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i B ---> A ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed B
wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed (B and A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i B ---> A ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed A
wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (B and A)
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
Γ ⊢i B ---> A ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed (B and A)
wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

Γ ⊢i B ---> A ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B
well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed B
wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
WFA: well_formed A
WFB: well_formed B

well_formed A
wf_auto2. } Defined.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i B ---> B and A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A using i → Γ ⊢i B ---> B and A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i B ---> B and A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
Γ ⊢i ?ϕ₁ ---> B ---> B and A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i ?ϕ₁ using i
exact H.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i A ---> B ---> B and A using i
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

Γ ⊢i A ---> B ---> B and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed A
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i
well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed A
wf_auto2.
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed B
Σ: Signature
Γ: Theory
A, B: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A using i

well_formed B
wf_auto2. } Defined.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A using i → Γ ⊢i B and A ---> C using i → Γ ⊢i B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A using i → Γ ⊢i B and A ---> C using i → Γ ⊢i B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

Γ ⊢i B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
well_formed (B and A)
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
well_formed C
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i B ---> B and A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i B and A ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed B
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed (B and A)
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
well_formed C
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i B ---> B and A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i B and A ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed (B and A)
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed C
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i B ---> B and A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i B and A ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed C
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

Γ ⊢i B ---> B and A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i B and A ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

Γ ⊢i B ---> B and A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed A
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed A
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i
Γ ⊢i A using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

well_formed B
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A using i
H0: Γ ⊢i B and A ---> C using i

Γ ⊢i A using i
exact H. Defined.
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A and B using i → Γ ⊢i B and A using i
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → Γ ⊢i A and B using i → Γ ⊢i B and A using i
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i

Γ ⊢i B and A using i
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
P1: Γ ⊢i B using i

Γ ⊢i B and A using i
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed A
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed B
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
P1: Γ ⊢i B using i
P2: Γ ⊢i A using i

Γ ⊢i B and A using i
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
P1: Γ ⊢i B using i
well_formed A
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
P1: Γ ⊢i B using i
well_formed B
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed A
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
well_formed B
Σ: Signature
A, B: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
H: Γ ⊢i A and B using i
P1: Γ ⊢i B using i
P2: Γ ⊢i A using i

Γ ⊢i B and A using i
apply conj_intro_meta; assumption. Defined.
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo

Γ ⊢i r' ---> r using i → l : hypotheses, Γ Ⱶ l-------------------------------------- r' using i → Γ Ⱶ l-------------------------------------- r using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo

Γ ⊢i r' ---> r using i → l : hypotheses, Γ Ⱶ l-------------------------------------- r' using i → Γ Ⱶ l-------------------------------------- r using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: Γ Ⱶ l-------------------------------------- r' using i

Γ Ⱶ l-------------------------------------- r using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- r' using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- r' using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- r' using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- r' using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- r' using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- r' using i )

well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- r using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- r using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- r using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- r using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- r using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- r using i )
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i

well_formed r → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r (patterns_of l) using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp r (patterns_of l) using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed ?g
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed r
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
Γ ⊢i ?g ---> r using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp ?g (patterns_of l) using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed r'
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed r
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp r' (patterns_of l) using i
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed r'
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed r
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed r'
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)

well_formed r'
Σ: Signature
Γ: Theory
r, r': Pattern
i: ProofInfo
Himp: Γ ⊢i r' ---> r using i
l: hypotheses
H: well_formed r' → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp r' (patterns_of l) using i
wfr: well_formed r
wfl: Pattern.wf (patterns_of l)
well_formed r'
1,2: pose proof (wfrr' := proved_impl_wf _ _ (proj1_sig Himp)); wf_auto2. Defined. Ltac _mlApplyMetaRaw t := eapply (@MLGoal_applyMeta _ _ _ _ _ t). Tactic Notation "mlApplyMetaRaw" uconstr(t) := _mlApplyMetaRaw t. Ltac2 _mlApplyMetaRaw (t : constr) := eapply (@MLGoal_applyMeta _ _ _ _ _ $t).
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo

Γ Ⱶ l-------------------------------------- x using i → Γ Ⱶ l-------------------------------------- x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo

Γ Ⱶ l-------------------------------------- x using i → Γ Ⱶ l-------------------------------------- x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: Γ Ⱶ l-------------------------------------- x using i

Γ Ⱶ l-------------------------------------- x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- x using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- x using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- x using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- x using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- x using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- x using i )

well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- x or y using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- x or y using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- x or y using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- x or y using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- x or y using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- x or y using i )
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i

well_formed (x or y) → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp (x or y) (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp (x or y) (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed ?g
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i ?g ---> x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp ?g (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i ?g ---> x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i ?g ---> x or y using BasicReasoning
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed x
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed y
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed y
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed x
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp x (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed x
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp x (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed x
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp x (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed (x or y)
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp x (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed x
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed x
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed x → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp x (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
assumption. } Defined.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo

Γ Ⱶ l-------------------------------------- y using i → Γ Ⱶ l-------------------------------------- x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo

Γ Ⱶ l-------------------------------------- y using i → Γ Ⱶ l-------------------------------------- x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: Γ Ⱶ l-------------------------------------- y using i

Γ Ⱶ l-------------------------------------- x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- y using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- y using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- y using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- y using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- y using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- y using i )

well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- x or y using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- x or y using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- x or y using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- x or y using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- x or y using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- x or y using i )
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i

well_formed (x or y) → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp (x or y) (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp (x or y) (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed ?g
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i ?g ---> x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp ?g (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i ?g ---> x or y using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i ?g ---> x or y using BasicReasoning
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed x
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed y
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed y
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed y
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp y (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed y
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp y (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed y
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed (x or y)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp y (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed (x or y)
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp y (patterns_of l) using i
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed y
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

well_formed y
wf_auto2.
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
l: hypotheses
x, y: Pattern
i: ProofInfo
H: well_formed y → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp y (patterns_of l) using i
wfxy: well_formed (x or y)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
assumption. } Defined. Ltac mlLeft := apply MLGoal_left. Ltac mlRight := apply MLGoal_right.
Σ: Signature
Γ: Theory
a: Pattern

well_formed a → Γ ⊢i a ---> a or a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern

well_formed a → Γ ⊢i a ---> a or a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ ⊢i a ---> a or a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed (a ---> a or a)
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a
Γ Ⱶ a ---> a or a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed (a ---> a or a)
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ a ---> a or a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H0" ∶ a, -------------------------------------- a or a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H0" ∶ a, -------------------------------------- a using BasicReasoning
mlExact "H0". Defined.
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo

Γ ⊢i r ---> r' using i → (l₁ l₂ : list named_hypothesis) (g : Pattern), Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i → Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo

Γ ⊢i r ---> r' using i → (l₁ l₂ : list named_hypothesis) (g : Pattern), Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i → Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
H: Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i

Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
H: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (n' ∶ r') :: l₂-------------------------------------- g using i )

well_formed (mlConclusion (Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (n ∶ r) :: l₂-------------------------------------- g using i )
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (n' ∶ r') :: l₂)) using i

well_formed g → Pattern.wf (patterns_of (l₁ ++ (n ∶ r) :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (n ∶ r) :: l₂)) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
H: well_formed g → Pattern.wf (patterns_of (l₁ ++ (n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (n' ∶ r') :: l₂)) using i
wfg: well_formed g
Hwf: Pattern.wf (patterns_of (l₁ ++ (n ∶ r) :: l₂))

Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (n ∶ r) :: l₂)) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
H: Pattern.wf (patterns_of (l₁ ++ (n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (n' ∶ r') :: l₂)) using i
wfg: well_formed g
Hwf: Pattern.wf (patterns_of (l₁ ++ (n ∶ r) :: l₂))

Γ ⊢i foldr patt_imp g (patterns_of (l₁ ++ (n ∶ r) :: l₂)) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
H: Pattern.wf (map nh_patt (l₁ ++ (n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt (l₁ ++ (n' ∶ r') :: l₂)) using i
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))

Γ ⊢i foldr patt_imp g (map nh_patt (l₁ ++ (n ∶ r) :: l₂)) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i

Γ ⊢i foldr patt_imp g (map nh_patt (l₁ ++ (n ∶ r) :: l₂)) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i

Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂)) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed ?h
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed (nh_patt (n ∶ r))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Γ ⊢i nh_patt (n ∶ r) ---> ?h using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ ?h :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed r'
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed (nh_patt (n ∶ r))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ r' :: (fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂) using i
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed r'
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed (nh_patt (n ∶ r))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
Hwf: Pattern.wf (map nh_patt (l₁ ++ (n ∶ r) :: l₂))
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

Pattern.wf (map nh_patt l₁)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed r'
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed (nh_patt (n ∶ r))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

Pattern.wf (map nh_patt l₁)
abstract (apply wfapp_proj_1 in Hwf; exact Hwf).
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed r'
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed (nh_patt (n ∶ r))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

Pattern.wf ((fix map (l : list named_hypothesis) : list Pattern := match l with | [] => [] | a :: t => nh_patt a :: map t end) l₂)
abstract (apply wfl₁hl₂_proj_l₂ in Hwf; exact Hwf).
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

well_formed r'
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed (nh_patt (n ∶ r))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

well_formed r'
abstract (pose proof (Himp' := proj1_sig Himp); apply proved_impl_wf in Himp'; wf_auto2).
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

well_formed (nh_patt (n ∶ r))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

well_formed (nh_patt (n ∶ r))
abstract (apply wfl₁hl₂_proj_h in Hwf; exact Hwf).
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

well_formed g
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))
Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

well_formed g
exact wfg.
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
Σ: Signature
Γ: Theory
n: string
r: Pattern
n': string
r': Pattern
i: ProofInfo
Himp: Γ ⊢i r ---> r' using i
l₁, l₂: list named_hypothesis
g: Pattern
wfg: well_formed g
H: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) → Γ ⊢i foldr patt_imp g (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂)) using i
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n ∶ r) :: l₂))

Pattern.wf (map nh_patt l₁ ++ map nh_patt ((n' ∶ r') :: l₂))
abstract( pose proof (wfapp_proj_1 Hwf); pose proof (wfl₁hl₂_proj_l₂ Hwf); pose proof (wfl₁hl₂_proj_h Hwf); unfold Pattern.wf; rewrite map_app; rewrite foldr_app; simpl; pose proof (Himp' := proj1_sig Himp); apply proved_impl_wf in Himp'; apply well_formed_imp_proj2 in Himp'; rewrite Himp'; simpl; unfold Pattern.wf in H1; rewrite H1; exact H0 ). } Defined. Ltac _mlApplyMetaRawIn t name := eapply cast_proof_ml_hyps; f_equal; _mlReshapeHypsByName name; eapply (@MLGoal_applyMetaIn _ _ _ _ name _ _ t); _mlReshapeHypsBack. Ltac2 _mlApplyMetaRawIn (t : constr) (name : constr) := ltac1:(t' name' |- _mlApplyMetaRawIn t' name') (Ltac1.of_constr t) (Ltac1.of_constr name) . Tactic Notation "mlApplyMetaRaw" uconstr(t) "in" constr(name) := _mlApplyMetaRawIn t name.
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i p ---> p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i p ---> p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i p ---> p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed (p ---> p or q)
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ p ---> p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed (p ---> p or q)
wf_auto2.
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ p ---> p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ p, -------------------------------------- p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ p or q, -------------------------------------- p or q using BasicReasoning
mlExact "H0". Defined. (* All thic complicated code is here only for one reason: I want to be able to first run the tactic with all the parameters inferred or question marked, which results in another goal. And then I want to handle the subgoals generated by the filling-in underscores / question marks. In particular, I want the proof mode goals to be generated first, and the other, uninteresting goals, next. *) Ltac2 rec fillWithUnderscoresAndCall (tac : constr -> unit) (t : constr) := lazy_match! Constr.type t with | (?t' -> ?t's) => lazy_match! goal with | [|- ?g] => let h := Fresh.in_goal ident:(h) in assert(h : $t' -> $g) > [( let pftprime := Fresh.in_goal ident:(pftprime) in intro $pftprime; let new_t := open_constr:($t ltac2:(Notations.exact0 false (fun () => Control.hyp (pftprime)))) in fillWithUnderscoresAndCall tac new_t; Std.clear [pftprime] )|(apply &h) ] end | (forall _ : _, _) => fillWithUnderscoresAndCall tac open_constr:($t _) | _ => tac t end . (* We have this double-primed version because we want to be able to feed it the proof before feeding it the ProofInfoLe. *)
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo

Γ ⊢i ϕ using i' → ProofInfoLe i' i → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo

Γ ⊢i ϕ using i' → ProofInfoLe i' i → Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo
H: Γ ⊢i ϕ using i'
pile: ProofInfoLe i' i

Γ ⊢i ϕ using i
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo
H: Γ ⊢i ϕ using i'
pile: ProofInfoLe i' i

ProofInfoLe ?i' i
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo
H: Γ ⊢i ϕ using i'
pile: ProofInfoLe i' i
Γ ⊢i ϕ using ?i'
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo
H: Γ ⊢i ϕ using i'
pile: ProofInfoLe i' i

ProofInfoLe ?i' i
apply pile.
Σ: Signature
Γ: Theory
ϕ: Pattern
i', i: ProofInfo
H: Γ ⊢i ϕ using i'
pile: ProofInfoLe i' i

Γ ⊢i ϕ using i'
apply H. Defined. Ltac2 _callCompletedAndCast (t : constr) (tac : constr -> unit) := let tac' := (fun (t' : constr) => let tcast := open_constr:(@useGenericReasoning'' _ _ _ _ _ $t') in fillWithUnderscoresAndCall tac tcast ) in fillWithUnderscoresAndCall tac' t . Ltac2 try_solve_pile_basic () := Control.enter (fun () => lazy_match! goal with | [ |- (@ProofInfoLe _ _ _)] => try (solve [ apply pile_any | apply pile_refl | apply pile_basic_generic' ]) | [|- _] => () end ) . Ltac2 try_wfa () := Control.enter (fun () => let wfa := (fun p => if (Constr.has_evar p) then () else ltac1:(try_wfauto2) ) in lazy_match! goal with | [|- well_formed ?p = true] => wfa p | [|- is_true (well_formed ?p) ] => wfa p | [|- _] => () end ) . Ltac2 mlApplyMeta (t : constr) := _callCompletedAndCast t _mlApplyMetaRaw ; try_solve_pile_basic (); try_wfa () . Ltac2 mlApplyMetaIn (t : constr) (name : constr) := _callCompletedAndCast t (fun t => _mlApplyMetaRawIn t name ); try_solve_pile_basic (); try_wfa () . Ltac _mlApplyMeta t := let ff := ltac2:(t' |- mlApplyMeta (Option.get (Ltac1.to_constr(t')))) in ff t. Ltac _mlApplyMetaIn t name := let ff := ltac2:(t' name' |- mlApplyMetaIn (Option.get (Ltac1.to_constr(t'))) (Option.get (Ltac1.to_constr(name')))) in ff t name . Tactic Notation "mlApplyMeta" constr(t) := _mlApplyMeta t. Tactic Notation "mlApplyMeta" constr(t) "in" constr(name) := _mlApplyMetaIn t name .
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo

Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i → Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo

Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i → Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i

Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i

well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))

mlTheory (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))
wfg': well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))

mlTheory (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))
wfg': well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf': Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))

mlTheory (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))

well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))

Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i → well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))
Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))

Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i → well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) → mlTheory (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )
auto.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed (mlConclusion (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i ))
Hwf: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i )))

Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf: Pattern.wf (patterns_of (l₁ ++ (nxy ∶ x and y) :: l₂))

Γ Ⱶ l₁ ++ (nxy ∶ x and y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf: Pattern.wf (patterns_of (l₁ ++ (nxy ∶ x and y) :: l₂))
l1: list named_hypothesis
Heql1: l1 = take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)
l2: list named_hypothesis
Heql2: l2 = drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)

well_formed y
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf: Pattern.wf (patterns_of (l₁ ++ (nxy ∶ x and y) :: l₂))
Hwf0: well_formed y
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf: Pattern.wf (patterns_of (l₁ ++ (nxy ∶ x and y) :: l₂))
Hwf0: well_formed y
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
l1: list named_hypothesis
Heql1: l1 = take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)
l2: list named_hypothesis
Heql2: l2 = drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

well_formed y
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
l1: list named_hypothesis
Heql1: l1 = take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)
l2: list named_hypothesis
Heql2: l2 = drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

well_formed y
abstract ( apply wfapp_proj_2 in Hwf; unfold Pattern.wf in Hwf; simpl in Hwf; apply andb_prop in Hwf; destruct Hwf as [wfxy _]; wf_auto2 ).
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Γ Ⱶ ?hyps-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

l₁ ++ (nxy ∶ x and y, ) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (l₁ ++ (nxy ∶ x and y, ))
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

well_formed x
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
H0: well_formed x
Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

well_formed x
abstract ( apply wfapp_proj_2 in Hwf; unfold Pattern.wf in Hwf; simpl in Hwf; apply andb_prop in Hwf as [wfxy _]; wf_auto2 ).
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
H0: well_formed x

Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
H0: well_formed x

Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- ?A and y using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
H0: well_formed x
h: well_formed ?A → Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- y using i
well_formed ?A
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
H0: well_formed x
h: well_formed x → Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- y using i

well_formed x
wf_auto2.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂)-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Γ Ⱶ ?hyps-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) (l₁ ++ (nxy ∶ x and y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

l₁ ++ (nxy ∶ x and y, ) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ l₂) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

patterns_of ?hyps = patterns_of ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))

Γ Ⱶ (l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
l1: list named_hypothesis
Heql1: l1 = take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)
l2: list named_hypothesis
Heql2: l2 = drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)

well_formed x
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)-------------------------------------- x using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
l1: list named_hypothesis
Heql1: l1 = take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)
l2: list named_hypothesis
Heql2: l2 = drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)

well_formed x
abstract ( apply wfapp_proj_2 in Hwf; unfold Pattern.wf in Hwf; simpl in Hwf; apply andb_prop in Hwf; destruct Hwf as [wfxy _]; wf_auto2 ).
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)-------------------------------------- x using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)-------------------------------------- x using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
Γ Ⱶ ?hyps-------------------------------------- x using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

l₁ ++ (nxy ∶ x and y, ) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (l₁ ++ (nxy ∶ x and y, ))
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- x using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

well_formed x
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1, H0: well_formed x
Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- x using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

well_formed x
abstract ( apply wfapp_proj_2 in Hwf; unfold Pattern.wf in Hwf; simpl in Hwf; apply andb_prop in Hwf as [wfxy _]; wf_auto2 ).
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1, H0: well_formed x

Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- x using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1, H0: well_formed x

Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- x and ?B using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1, H0: well_formed x
h: well_formed ?B → Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- x using i
well_formed ?B
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1, H0: well_formed x
h: well_formed y → Γ Ⱶ l₁ ++ (nxy ∶ x and y, )-------------------------------------- x using i

well_formed y
assumption.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

Γ Ⱶ take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂)-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
Γ Ⱶ ?hyps-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

(l₁ ++ (nxy ∶ x and y, )) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

l₁ ++ (nxy ∶ x and y, ) ++ l₂ = l₁ ++ (nxy ∶ x and y) :: l₂
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (take (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of ((l₁ ++ (nxy ∶ x and y, )) ++ (nx ∶ x) :: drop (length (l₁ ++ (nxy ∶ x and y, ))) ((l₁ ++ (nxy ∶ x and y, )) ++ (ny ∶ y) :: l₂))
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of ((l₁ ++ (nxy ∶ x and y, )) ++ (nx ∶ x) :: (ny ∶ y) :: l₂)
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

Γ Ⱶ (l₁ ++ (nxy ∶ x and y, )) ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of ((l₁ ++ (nxy ∶ x and y, )) ++ (nx ∶ x) :: (ny ∶ y) :: l₂)
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x
Γ Ⱶ ?hyps-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of ((l₁ ++ (nxy ∶ x and y, )) ++ (nx ∶ x) :: (ny ∶ y) :: l₂)
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

patterns_of ?hyps = patterns_of (l₁ ++ (nxy ∶ x and y, ) ++ (nx ∶ x) :: (ny ∶ y) :: l₂)
reflexivity.
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

Γ Ⱶ l₁ ++ (nxy ∶ x and y, ) ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
Σ: Signature
Γ: Theory
g: Pattern
l₁, l₂: list named_hypothesis
nx: string
x: Pattern
ny: string
y: Pattern
nxy: string
i: ProofInfo
H: Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
wfg: well_formed g
Hwf0: well_formed y
Hwf: Pattern.wf (map nh_patt l₁ ++ map nh_patt ((nxy ∶ x and y) :: l₂))
Hwf1: well_formed x

Γ Ⱶ l₁ ++ (nx ∶ x) :: (ny ∶ y) :: l₂-------------------------------------- g using i
exact H. Defined. Tactic Notation "mlDestructAnd" constr(name) "as" constr(name1) constr(name2) := _failIfUsed name1; _failIfUsed name2; eapply cast_proof_ml_hyps; f_equal; _mlReshapeHypsByName name; apply MLGoal_destructAnd with (nxy := name) (nx := name1) (ny := name2); _mlReshapeHypsBack. Tactic Notation "mlDestructAnd" constr(name) := let hyps := _getHypNames in let name0 := eval cbv in (fresh hyps) in let name1 := eval cbv in (fresh (name0 :: hyps)) in mlDestructAnd name as name0 name1.
Σ: Signature
Γ: Theory
a, b, p, q: Pattern

well_formed a → well_formed b → well_formed p → well_formed q → Γ ⊢i p and q ---> a and b ---> q ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern

well_formed a → well_formed b → well_formed p → well_formed q → Γ ⊢i p and q ---> a and b ---> q ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

Γ ⊢i p and q ---> a and b ---> q ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

well_formed (p and q ---> a and b ---> q ---> a)
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q
Γ Ⱶ p and q ---> a and b ---> q ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

well_formed (p and q ---> a and b ---> q ---> a)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

Γ Ⱶ p and q ---> a and b ---> q ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

Γ Ⱶ "H0" ∶ p and q, -------------------------------------- a and b ---> q ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

Γ Ⱶ "H0" ∶ p and q, "H1" ∶ a and b, -------------------------------------- q ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

Γ Ⱶ "H0" ∶ p and q, "H1" ∶ a and b, "H2" ∶ q, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

Γ Ⱶ "H0" ∶ p and q, "H3" ∶ a, "H4" ∶ b, "H2" ∶ q, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, p, q: Pattern
H: well_formed a
H0: well_formed b
H1: well_formed p
H2: well_formed q

Γ Ⱶ "0" ∶ p, "1" ∶ q, "H3" ∶ a, "H4" ∶ b, "H2" ∶ q, -------------------------------------- a using BasicReasoning
mlExact "H3". Defined.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p <---> p' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p <---> p' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q <---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q <---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p and q ---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ ⊢i p' and q' ---> p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p and q ---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p and q ---> p' and q')
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p and q ---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p and q ---> p' and q')
wf_auto2.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p and q ---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p and q, -------------------------------------- p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! (! p or ! q), -------------------------------------- ! (! p' or ! q') using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! (! p or ! q), "H1" ∶ ! p' or ! q', -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p or ! q ---> ⊥, "H1" ∶ ! p' or ! q', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p or ! q ---> ⊥, "H2" ∶ ! p', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H0" ∶ ! p or ! q ---> ⊥, "H3" ∶ ! q', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p or ! q ---> ⊥, "H2" ∶ ! p', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i ! p' ---> ! p using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p or ! q ---> ⊥, "H2" ∶ ! p', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i ! p' ---> ! p using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! p' ---> ! p, "H0" ∶ ! p or ! q ---> ⊥, "H2" ∶ ! p', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i ! p' ---> ! p using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! p' ---> ! p, "H0" ∶ ! p or ! q ---> ⊥, "H2" ∶ ! p', -------------------------------------- ! p using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i ! p' ---> ! p using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! p' ---> ! p, "H0" ∶ ! p or ! q ---> ⊥, "H2" ∶ ! p', -------------------------------------- ! p' using i
mlExact "H2".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p or ! q ---> ⊥, "H3" ∶ ! q', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i ! q' ---> ! q using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p or ! q ---> ⊥, "H3" ∶ ! q', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i ! q' ---> ! q using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! q' ---> ! q, "H0" ∶ ! p or ! q ---> ⊥, "H3" ∶ ! q', -------------------------------------- ! p or ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i ! q' ---> ! q using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! q' ---> ! q, "H0" ∶ ! p or ! q ---> ⊥, "H3" ∶ ! q', -------------------------------------- ! q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i ! q' ---> ! q using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! q' ---> ! q, "H0" ∶ ! p or ! q ---> ⊥, "H3" ∶ ! q', -------------------------------------- ! q' using i
mlExact "H3".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p' and q' ---> p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p' and q' ---> p and q)
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p' and q' ---> p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p' and q' ---> p and q)
wf_auto2.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p' and q' ---> p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', -------------------------------------- p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! (! p' or ! q'), -------------------------------------- ! (! p or ! q) using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! (! p' or ! q'), "H1" ∶ ! p or ! q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H1" ∶ ! p or ! q, -------------------------------------- ! p' or ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H2" ∶ ! p, -------------------------------------- ! p' or ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H3" ∶ ! q, -------------------------------------- ! p' or ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H2" ∶ ! p, -------------------------------------- ! p' or ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H2" ∶ ! p, -------------------------------------- ! p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i ! p ---> ! p' using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H2" ∶ ! p, -------------------------------------- ! p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i ! p ---> ! p' using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! p ---> ! p', "H0" ∶ ! p' or ! q' ---> ⊥, "H2" ∶ ! p, -------------------------------------- ! p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i ! p ---> ! p' using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ ! p ---> ! p', "H0" ∶ ! p' or ! q' ---> ⊥, "H2" ∶ ! p, -------------------------------------- ! p using i
mlExact "H2".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H3" ∶ ! q, -------------------------------------- ! p' or ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H3" ∶ ! q, -------------------------------------- ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i ! q ---> ! q' using i

Γ Ⱶ "H0" ∶ ! p' or ! q' ---> ⊥, "H3" ∶ ! q, -------------------------------------- ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i ! q ---> ! q' using i

Γ Ⱶ "H1" ∶ ! q ---> ! q', "H0" ∶ ! p' or ! q' ---> ⊥, "H3" ∶ ! q, -------------------------------------- ! q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i ! q ---> ! q' using i

Γ Ⱶ "H1" ∶ ! q ---> ! q', "H0" ∶ ! p' or ! q' ---> ⊥, "H3" ∶ ! q, -------------------------------------- ! q using i
mlExact "H3". Defined.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p <---> p' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p <---> p' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q <---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q <---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p or q ---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ ⊢i p' or q' ---> p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p or q ---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p or q ---> p' or q')
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p or q ---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p or q ---> p' or q')
auto.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p or q ---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p or q, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H2" ∶ q, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, -------------------------------------- p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p ---> p' using i
assumption.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q, -------------------------------------- q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i q ---> q' using i
assumption.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p' or q' ---> p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p' or q' ---> p or q)
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p' or q' ---> p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p' or q' ---> p or q)
auto.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p' or q' ---> p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' or q', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H2" ∶ q', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p', -------------------------------------- p using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p' ---> p using i
assumption.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q', -------------------------------------- q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i q' ---> q using i
assumption. Defined.
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i (p ---> q) <---> ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i (p ---> q) <---> ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i (p ---> q) <---> ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i (p ---> q) ---> ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ ⊢i ! p or q ---> p ---> q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i (p ---> q) ---> ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed ((p ---> q) ---> ! p or q)
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ (p ---> q) ---> ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed ((p ---> q) ---> ! p or q)
wf_auto2.
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ (p ---> q) ---> ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ p ---> q, -------------------------------------- ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H1" ∶ p or ! p, "H0" ∶ p ---> q, -------------------------------------- ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H2" ∶ p, "H0" ∶ p ---> q, -------------------------------------- ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ "H3" ∶ ! p, "H0" ∶ p ---> q, -------------------------------------- ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H2" ∶ p, "H0" ∶ p ---> q, -------------------------------------- ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H2" ∶ p, "H0" ∶ p ---> q, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H2" ∶ p, "H0" ∶ p ---> q, -------------------------------------- p using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H3" ∶ ! p, "H0" ∶ p ---> q, -------------------------------------- ! p or q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H3" ∶ ! p, "H0" ∶ p ---> q, -------------------------------------- ! p using BasicReasoning
mlExact "H3".
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i ! p or q ---> p ---> q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed (! p or q ---> p ---> q)
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ ! p or q ---> p ---> q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed (! p or q ---> p ---> q)
wf_auto2.
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ ! p or q ---> p ---> q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ ! p or q, -------------------------------------- p ---> q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ ! p or q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ ! ! p ---> q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ ! ! p ---> q, "H2" ∶ p, -------------------------------------- ! ! p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H0" ∶ ! ! p ---> q, "H2" ∶ p, -------------------------------------- p using BasicReasoning
mlExact "H2". Defined.
Σ: Signature
Γ: Theory
p: Pattern

well_formed p → Γ ⊢i ⊥ <---> p and ! p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern

well_formed p → Γ ⊢i ⊥ <---> p and ! p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ ⊢i ⊥ <---> p and ! p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ ⊢i ⊥ ---> p and ! p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p
Γ ⊢i p and ! p ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ ⊢i ⊥ ---> p and ! p using BasicReasoning
apply bot_elim; auto.
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ ⊢i p and ! p ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ ⊢i ! (! p or ! ! p) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

well_formed (! (! p or ! ! p) ---> ⊥)
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p
Γ Ⱶ ! (! p or ! ! p) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

well_formed (! (! p or ! ! p) ---> ⊥)
wf_auto2.
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ Ⱶ ! (! p or ! ! p) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ Ⱶ "H0" ∶ ! (! p or ! ! p), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ Ⱶ "H0" ∶ ! p or ! ! p ---> ⊥, -------------------------------------- ! p or ! ! p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
wfp: well_formed p

Γ Ⱶ "H1" ∶ ! p or ! ! p, "H0" ∶ ! p or ! ! p ---> ⊥, -------------------------------------- ! p or ! ! p using BasicReasoning
mlExact "H1". Defined. Ltac mlExFalso := mlApplyMeta bot_elim .
Σ: Signature
Γ: Theory
A, B, L, R: Pattern

well_formed A → well_formed B → well_formed L → well_formed R → Γ ⊢i (L and A ---> B or R) ---> L ---> (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern

well_formed A → well_formed B → well_formed L → well_formed R → Γ ⊢i (L and A ---> B or R) ---> L ---> (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ ⊢i (L and A ---> B or R) ---> L ---> (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

well_formed ((L and A ---> B or R) ---> L ---> (A ---> B) or R)
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Γ Ⱶ (L and A ---> B or R) ---> L ---> (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

well_formed ((L and A ---> B or R) ---> L ---> (A ---> B) or R)
wf_auto2.
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ (L and A ---> B or R) ---> L ---> (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H0" ∶ L and A ---> B or R, -------------------------------------- L ---> (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H2" ∶ A or ! A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Γ Ⱶ "H4" ∶ ! A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

well_formed (B or R)
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)
Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- B or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)
Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H2" ∶ B or R, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

well_formed (B or R)
wf_auto2.
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- B or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)
Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H2" ∶ B or R, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- B or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- L and A using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- ! (! L or ! A) using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H2" ∶ ! L or ! A, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H4" ∶ ! L, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)
Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H5" ∶ ! A, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H4" ∶ ! L, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H4" ∶ L ---> ⊥, -------------------------------------- L using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H5" ∶ ! A, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H5" ∶ A ---> ⊥, -------------------------------------- A using BasicReasoning
mlExact "H3".
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H2" ∶ B or R, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H4" ∶ B, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)
Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H5" ∶ R, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H4" ∶ B, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H4" ∶ B, -------------------------------------- A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H4" ∶ B, "H2" ∶ A, -------------------------------------- B using BasicReasoning
mlExact "H4".
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H5" ∶ R, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R
Hwf: well_formed (B or R)

Γ Ⱶ "H3" ∶ A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H5" ∶ R, -------------------------------------- R using BasicReasoning
mlExact "H5".
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H4" ∶ ! A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- (A ---> B) or R using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H4" ∶ ! A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, -------------------------------------- A ---> B using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H4" ∶ ! A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H2" ∶ A, -------------------------------------- B using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H4" ∶ ! A, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H2" ∶ A, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
wfA: well_formed A
wfB: well_formed B
wfL: well_formed L
wfR: well_formed R

Γ Ⱶ "H4" ∶ A ---> ⊥, "H0" ∶ L and A ---> B or R, "H1" ∶ L, "H2" ∶ A, -------------------------------------- A using BasicReasoning
mlExact "H2". Defined.
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed L → well_formed R → Γ ⊢i L and A ---> B or R using i → Γ ⊢i L ---> (A ---> B) or R using i
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed L → well_formed R → Γ ⊢i L and A ---> B or R using i → Γ ⊢i L ---> (A ---> B) or R using i
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFL: well_formed L
WFR: well_formed R
H: Γ ⊢i L and A ---> B or R using i

Γ ⊢i L ---> (A ---> B) or R using i
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFL: well_formed L
WFR: well_formed R
H: Γ ⊢i L and A ---> B or R using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFL: well_formed L
WFR: well_formed R
H: Γ ⊢i L and A ---> B or R using i
Γ ⊢i ?ϕ₁ ---> L ---> (A ---> B) or R using i
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFL: well_formed L
WFR: well_formed R
H: Γ ⊢i L and A ---> B or R using i

Γ ⊢i ?ϕ₁ ---> L ---> (A ---> B) or R using i
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFL: well_formed L
WFR: well_formed R
H: Γ ⊢i L and A ---> B or R using i

Γ ⊢i ?ϕ₁ ---> L ---> (A ---> B) or R using BasicReasoning
apply weird_lemma; assumption.
Σ: Signature
Γ: Theory
A, B, L, R: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFL: well_formed L
WFR: well_formed R
H: Γ ⊢i L and A ---> B or R using i

Γ ⊢i L and A ---> B or R using i
exact H. Defined.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → well_formed D → Γ ⊢i C ---> A using i → Γ ⊢i B ---> D using i → Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → well_formed D → Γ ⊢i C ---> A using i → Γ ⊢i B ---> D using i → Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (B ---> D) ---> (A ---> B) ---> A ---> D using BasicReasoning

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (B ---> D) ---> (A ---> B) ---> A ---> D using ?i

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using ?i

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (B ---> D) ---> (A ---> B) ---> A ---> D using ?i
Γ ⊢i B ---> D using ?i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (B ---> D) ---> (A ---> B) ---> A ---> D using ?i

Γ ⊢i B ---> D using ?i
exact H0.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (C ---> A) ---> (A ---> D) ---> C ---> D using BasicReasoning

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (C ---> A) ---> (A ---> D) ---> C ---> D using ?i

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (A ---> D) ---> C ---> D using ?i

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (C ---> A) ---> (A ---> D) ---> C ---> D using ?i
Γ ⊢i C ---> A using ?i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (C ---> A) ---> (A ---> D) ---> C ---> D using ?i

Γ ⊢i C ---> A using ?i
exact H.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (A ---> D) ---> C ---> D using i

Γ ⊢i (A ---> B) ---> C ---> D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (A ---> D) ---> C ---> D using i
H3: Γ ⊢i (A ---> B) ---> C ---> D using i

Γ ⊢i (A ---> B) ---> C ---> D using i
exact H3.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (A ---> D) ---> C ---> D using i

well_formed (A ---> B)
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (A ---> D) ---> C ---> D using i
well_formed (A ---> D)
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i C ---> A using i
H0: Γ ⊢i B ---> D using i
H1: Γ ⊢i (A ---> B) ---> A ---> D using i
H2: Γ ⊢i (A ---> D) ---> C ---> D using i
well_formed (C ---> D)
all: wf_auto2. Defined.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i B ---> C using i → Γ ⊢i A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i B ---> C using i → Γ ⊢i A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i

Γ ⊢i A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning

Γ ⊢i A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning

Γ ⊢i ?ϕ₁ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
Γ ⊢i ?ϕ₁ ---> A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning

Γ ⊢i ?ϕ₁ ---> A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning

Γ ⊢i ?ϕ₁ ---> A and B ---> A and C using BasicReasoning
exact H0.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning

Γ ⊢i A ---> B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning

well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
well_formed A
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
well_formed (A and C)
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
Γ ⊢i B ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning

Γ ⊢i B ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i B ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i ?ϕ₁ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning
Γ ⊢i ?ϕ₁ ---> B ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i ?ϕ₁ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning
Γ ⊢i ?ϕ₁0 using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning
Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ ---> B ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ ---> B ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i ?ϕ₁0 ---> ?ϕ₁ ---> B ---> A ---> A and C using BasicReasoning
exact H1.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i C ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning
Γ ⊢i B ---> C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i B ---> C using i
exact H.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i C ---> A ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
H1: Γ ⊢i (B ---> C) ---> (C ---> A ---> A and C) ---> B ---> A ---> A and C using BasicReasoning

Γ ⊢i C ---> A ---> A and C using BasicReasoning
apply conj_intro2; assumption.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i

well_formed A
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
well_formed (A and C)
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
well_formed C
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
well_formed B
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i B ---> C using i
H0: Γ ⊢i (A ---> B ---> A and C) ---> A and B ---> A and C using BasicReasoning
well_formed (A ---> A and C)
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → well_formed D → Γ ⊢i A ---> B using i → Γ ⊢i C ---> D using i → Γ ⊢i A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo

well_formed A → well_formed B → well_formed C → well_formed D → Γ ⊢i A ---> B using i → Γ ⊢i C ---> D using i → Γ ⊢i A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ ⊢i A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

well_formed (A and C ---> B and D)
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i
Γ Ⱶ A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

well_formed (A and C ---> B and D)
wf_auto2.
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H0" ∶ A ---> B, -------------------------------------- A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, -------------------------------------- A and C ---> B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H2" ∶ A and C, -------------------------------------- B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, -------------------------------------- B and D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H5" ∶ ! B or ! D, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H6" ∶ ! B, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i
Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H7" ∶ ! D, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H6" ∶ ! B, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H6" ∶ B ---> ⊥, -------------------------------------- B using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H6" ∶ B ---> ⊥, -------------------------------------- A using i
mlExact "H3".
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H7" ∶ ! D, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H7" ∶ ! D, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H7" ∶ D ---> ⊥, -------------------------------------- D using i
Σ: Signature
Γ: Theory
A, B, C, D: Pattern
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
WFD: well_formed D
H: Γ ⊢i A ---> B using i
H0: Γ ⊢i C ---> D using i

Γ Ⱶ "H1" ∶ C ---> D, "H0" ∶ A ---> B, "H3" ∶ A, "H4" ∶ C, "H7" ∶ D ---> ⊥, -------------------------------------- C using i
mlExact "H4". } } Defined.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A and B ---> C using i → Γ ⊢i A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo

well_formed A → well_formed B → well_formed C → Γ ⊢i A and B ---> C using i → Γ ⊢i A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ ⊢i A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

well_formed (A and B ---> A and C)
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i
Γ Ⱶ A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

well_formed (A and B ---> A and C)
wf_auto2.
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, -------------------------------------- A and B ---> A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, -------------------------------------- A and C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H2" ∶ ! A or ! C, -------------------------------------- ⊥ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H3" ∶ ! A, -------------------------------------- ⊥ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i
Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H4" ∶ ! C, -------------------------------------- ⊥ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H3" ∶ ! A, -------------------------------------- ⊥ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H5" ∶ A, "H6" ∶ B, "H3" ∶ ! A, -------------------------------------- ⊥ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H5" ∶ A, "H6" ∶ B, "H3" ∶ A ---> ⊥, -------------------------------------- A using i
mlExact "H5".
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H4" ∶ ! C, -------------------------------------- ⊥ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H4" ∶ ! C, -------------------------------------- ⊥ using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H4" ∶ C ---> ⊥, -------------------------------------- C using i
Σ: Signature
A, B, C: Pattern
Γ: Theory
i: ProofInfo
WFA: well_formed A
WFB: well_formed B
WFC: well_formed C
H: Γ ⊢i A and B ---> C using i

Γ Ⱶ "H0" ∶ A and B ---> C, "H1" ∶ A and B, "H4" ∶ C ---> ⊥, -------------------------------------- A and B using i
mlExact "H1". } Defined.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo

well_formed a = true → well_formed b = true → well_formed a' = true → well_formed b' = true → Γ ⊢i a <---> a' using i → Γ ⊢i b <---> b' using i → Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo

well_formed a = true → well_formed b = true → well_formed a' = true → well_formed b' = true → Γ ⊢i a <---> a' using i → Γ ⊢i b <---> b' using i → Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i

Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i

well_formed (a ---> a')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
well_formed (a' ---> a)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i

well_formed (a ---> a')
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i

well_formed (a' ---> a)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i

well_formed (a' ---> a)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i

Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i

well_formed (a ---> a')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
well_formed (a' ---> a)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i

well_formed (a ---> a')
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i

well_formed (a' ---> a)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i

well_formed (a' ---> a)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i

Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i

well_formed (b ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
well_formed (b' ---> b)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i

well_formed (b ---> b')
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i

well_formed (b' ---> b)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i

well_formed (b' ---> b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i

Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i

well_formed (b ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
well_formed (b' ---> b)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i

well_formed (b ---> b')
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i

well_formed (b' ---> b)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i

well_formed (b' ---> b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b) <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed (a ---> b)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
well_formed (a ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
well_formed (a' ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b) <---> (a ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b') <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b) <---> (a ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b') <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b) <---> (a ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b) ---> a ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
well_formed ((a ---> b') ---> a ---> b)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b) ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b') ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b) ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b') ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b) ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b) ---> a ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ Ⱶ (a ---> b) ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b) ---> a ---> b')
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ (a ---> b) ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a ---> b, -------------------------------------- a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a ---> b, "H1" ∶ a, -------------------------------------- b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ b ---> b', "H0" ∶ a ---> b, "H1" ∶ a, -------------------------------------- b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ b ---> b', "H0" ∶ a ---> b, "H1" ∶ a, -------------------------------------- b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ b ---> b', "H0" ∶ a ---> b, "H1" ∶ a, -------------------------------------- a using i
mlExact "H1".
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b') ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b') ---> a ---> b)
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ Ⱶ (a ---> b') ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b') ---> a ---> b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ (a ---> b') ---> a ---> b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a ---> b', -------------------------------------- a ---> b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a ---> b', "H1" ∶ a, -------------------------------------- b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ b' ---> b, "H0" ∶ a ---> b', "H1" ∶ a, -------------------------------------- b using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ b' ---> b, "H0" ∶ a ---> b', "H1" ∶ a, -------------------------------------- b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ b' ---> b, "H0" ∶ a ---> b', "H1" ∶ a, -------------------------------------- a using i
mlExact "H1".
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b') <---> (a' ---> b') using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b') ---> a' ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
well_formed ((a' ---> b') ---> a ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a ---> b') ---> a' ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a' ---> b') ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b') ---> a' ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ ⊢i (a' ---> b') ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a ---> b') ---> a' ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b') ---> a' ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ Ⱶ (a ---> b') ---> a' ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a ---> b') ---> a' ---> b')
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ (a ---> b') ---> a' ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a ---> b', -------------------------------------- a' ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a ---> b', "H1" ∶ a', -------------------------------------- b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ a' ---> a, "H0" ∶ a ---> b', "H1" ∶ a', -------------------------------------- b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ a' ---> a, "H0" ∶ a ---> b', "H1" ∶ a', -------------------------------------- a using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ a' ---> a, "H0" ∶ a ---> b', "H1" ∶ a', -------------------------------------- a' using i
mlExact "H1".
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ ⊢i (a' ---> b') ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a' ---> b') ---> a ---> b')
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i
Γ Ⱶ (a' ---> b') ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

well_formed ((a' ---> b') ---> a ---> b')
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ (a' ---> b') ---> a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a' ---> b', -------------------------------------- a ---> b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H0" ∶ a' ---> b', "H1" ∶ a, -------------------------------------- b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ a ---> a', "H0" ∶ a' ---> b', "H1" ∶ a, -------------------------------------- b' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ a ---> a', "H0" ∶ a' ---> b', "H1" ∶ a, -------------------------------------- a' using i
Σ: Signature
Γ: Theory
a, b, a', b': Pattern
i: ProofInfo
wfa: well_formed a = true
wfb: well_formed b = true
wfa': well_formed a' = true
wfb': well_formed b' = true
Haa': Γ ⊢i a <---> a' using i
Hbb': Γ ⊢i b <---> b' using i
Haa'1: Γ ⊢i a ---> a' using i
Haa'2: Γ ⊢i a' ---> a using i
Hbb'1: Γ ⊢i b ---> b' using i
Hbb'2: Γ ⊢i b' ---> b using i

Γ Ⱶ "H2" ∶ a ---> a', "H0" ∶ a' ---> b', "H1" ∶ a, -------------------------------------- a using i
mlExact "H1". Defined.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a and b ---> c using i → Γ ⊢i a ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a and b ---> c using i → Γ ⊢i a ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

Γ ⊢i a ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

well_formed (a ---> b ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i
Γ Ⱶ a ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

well_formed (a ---> b ---> c)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

Γ Ⱶ a ---> b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

Γ Ⱶ "H0" ∶ a, -------------------------------------- b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, -------------------------------------- a and b using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

Γ ⊢i a ---> b ---> a and b using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

Γ ⊢i a ---> b ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

well_formed a
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i
well_formed b
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

well_formed a
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

well_formed b
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a and b ---> c using i

well_formed b
wf_auto2. } Defined.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c using i → Γ ⊢i a and b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c using i → Γ ⊢i a and b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ ⊢i a and b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

well_formed (a and b ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Γ Ⱶ a and b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

well_formed (a and b ---> c)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ Ⱶ a and b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

Γ Ⱶ "H0" ∶ a and b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

well_formed b
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Γ Ⱶ "H0" ∶ a and b, -------------------------------------- b using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Γ Ⱶ "H0" ∶ a and b, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i

well_formed b
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b

Γ Ⱶ "H0" ∶ a and b, -------------------------------------- b using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Γ Ⱶ "H0" ∶ a and b, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b

Γ Ⱶ "H0" ∶ a and b, -------------------------------------- b using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b

Γ ⊢i a and b ---> b using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b

Γ ⊢i a and b ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b

well_formed a
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
well_formed b
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b

well_formed b
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b

Γ Ⱶ "H0" ∶ a and b, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
l1: list named_hypothesis
Heql1: l1 = ("H0" ∶ a and b, )
l2: list named_hypothesis
Heql2: l2 = ("H1" ∶ b, )

well_formed a
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Γ Ⱶ "H0" ∶ a and b, -------------------------------------- a using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Γ Ⱶ "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
l1: list named_hypothesis
Heql1: l1 = ("H0" ∶ a and b, )
l2: list named_hypothesis
Heql2: l2 = ("H1" ∶ b, )

well_formed a
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

Γ Ⱶ "H0" ∶ a and b, -------------------------------------- a using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Γ Ⱶ "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

Γ Ⱶ "H0" ∶ a and b, -------------------------------------- a using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

Γ ⊢i a and b ---> a using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

Γ ⊢i a and b ---> a using BasicReasoning
apply pf_conj_elim_l; wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

Γ Ⱶ "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

well_formed (b ---> c)
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)
Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)
Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, "H4" ∶ b ---> c, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a

well_formed (b ---> c)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)

Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)
Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, "H4" ∶ b ---> c, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)

Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- b ---> c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)

Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, -------------------------------------- a using i
mlExact "H2".
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)

Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, "H4" ∶ b ---> c, -------------------------------------- c using i
Σ: Signature
Γ: Theory
a, b, c: Pattern
i: ProofInfo
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
H: Γ ⊢i a ---> b ---> c using i
Hwf: well_formed b
Hwf0: well_formed a
Hwf1: well_formed (b ---> c)

Γ Ⱶ "H3" ∶ a ---> b ---> c, "H0" ∶ a and b, "H2" ∶ a, "H1" ∶ b, "H4" ∶ b ---> c, -------------------------------------- b using i
mlExact "H1". Defined.
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern

well_formed a → well_formed b → Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern

well_formed a → well_formed b → Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf l

Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf []

Γ ⊢i foldr patt_imp a [] ---> foldr patt_imp b [] ---> foldr patt_imp (a and b) [] using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
Γ ⊢i foldr patt_imp a (a0 :: l) ---> foldr patt_imp b (a0 :: l) ---> foldr patt_imp (a and b) (a0 :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf []

Γ ⊢i foldr patt_imp a [] ---> foldr patt_imp b [] ---> foldr patt_imp (a and b) [] using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf []

Γ ⊢i a ---> b ---> a and b using BasicReasoning
apply conj_intro; assumption.
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning

Γ ⊢i foldr patt_imp a (a0 :: l) ---> foldr patt_imp b (a0 :: l) ---> foldr patt_imp (a and b) (a0 :: l) using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning

Γ ⊢i (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfl': Pattern.wf (a0 :: l)

Γ ⊢i (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfl': foldr andb true (map well_formed (a0 :: l))

Γ ⊢i (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfl': well_formed a0 && foldr andb true (map well_formed l)

Γ ⊢i (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

Γ ⊢i (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

Γ ⊢i (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

well_formed ((a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l)
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Γ Ⱶ (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

well_formed ((a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ (a0 ---> foldr patt_imp a l) ---> (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, -------------------------------------- (a0 ---> foldr patt_imp b l) ---> a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, -------------------------------------- a0 ---> foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

well_formed (foldr patt_imp a l)
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, -------------------------------------- foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true

well_formed (foldr patt_imp a l)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, -------------------------------------- foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, -------------------------------------- foldr patt_imp a l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, -------------------------------------- a0 using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)

well_formed (foldr patt_imp b l)
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)
Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, -------------------------------------- foldr patt_imp b l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)
Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, "H4" ∶ foldr patt_imp b l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)

well_formed (foldr patt_imp b l)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, -------------------------------------- foldr patt_imp b l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)
Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, "H4" ∶ foldr patt_imp b l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, -------------------------------------- foldr patt_imp b l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, -------------------------------------- a0 using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H2" ∶ a0, "H3" ∶ foldr patt_imp a l, "H4" ∶ foldr patt_imp b l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H1" ∶ a0 ---> foldr patt_imp b l, "H3" ∶ foldr patt_imp a l, "H4" ∶ foldr patt_imp b l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ Ⱶ "H0" ∶ a0 ---> foldr patt_imp a l, "H3" ∶ foldr patt_imp a l, "H4" ∶ foldr patt_imp b l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ Ⱶ "H3" ∶ foldr patt_imp a l, "H4" ∶ foldr patt_imp b l, -------------------------------------- foldr patt_imp (a and b) l using BasicReasoning
Σ: Signature
Γ: Theory
a, b, a0: Pattern
l: list Pattern
wfa: well_formed a
wfb: well_formed b
wfl: Pattern.wf (a0 :: l)
IHl: Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
wfa0: well_formed a0 = true
wfl': foldr andb true (map well_formed l) = true
Hwf: well_formed (foldr patt_imp a l)
Hwf0: well_formed (foldr patt_imp b l)

Γ ⊢i foldr patt_imp a l ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
apply IHl. Defined.
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo

well_formed a → well_formed b → Pattern.wf l → Γ ⊢i foldr patt_imp a l using i → Γ ⊢i foldr patt_imp b l ---> foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo

well_formed a → well_formed b → Pattern.wf l → Γ ⊢i foldr patt_imp a l using i → Γ ⊢i foldr patt_imp b l ---> foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i

Γ ⊢i foldr patt_imp b l ---> foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp b l ---> foldr patt_imp (a and b) l using BasicReasoning
apply prf_conj_split; assumption.
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i

Γ ⊢i foldr patt_imp a l using i
exact H2. Defined.
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo

well_formed a → well_formed b → Pattern.wf l → Γ ⊢i foldr patt_imp a l using i → Γ ⊢i foldr patt_imp b l using i → Γ ⊢i foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo

well_formed a → well_formed b → Pattern.wf l → Γ ⊢i foldr patt_imp a l using i → Γ ⊢i foldr patt_imp b l using i → Γ ⊢i foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i
H3: Γ ⊢i foldr patt_imp b l using i

Γ ⊢i foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i
H3: Γ ⊢i foldr patt_imp b l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i
H3: Γ ⊢i foldr patt_imp b l using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp (a and b) l using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i
H3: Γ ⊢i foldr patt_imp b l using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp (a and b) l using i
apply prf_conj_split_meta; assumption.
Σ: Signature
Γ: Theory
a, b: Pattern
l: list Pattern
i: ProofInfo
H: well_formed a
H0: well_formed b
H1: Pattern.wf l
H2: Γ ⊢i foldr patt_imp a l using i
H3: Γ ⊢i foldr patt_imp b l using i

Γ ⊢i foldr patt_imp b l using i
exact H3. Defined.
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo

Γ Ⱶ l-------------------------------------- a using i → Γ Ⱶ l-------------------------------------- b using i → Γ Ⱶ l-------------------------------------- a and b using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo

Γ Ⱶ l-------------------------------------- a using i → Γ Ⱶ l-------------------------------------- b using i → Γ Ⱶ l-------------------------------------- a and b using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ Ⱶ l-------------------------------------- a using i
Hb: Γ Ⱶ l-------------------------------------- b using i

Γ Ⱶ l-------------------------------------- a and b using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- a using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- a using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- a using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- a using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- a using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- a using i )
Hb: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- b using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- b using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- b using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- b using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- b using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- b using i )

well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- a and b using i )) → Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- a and b using i ))) → mlTheory (Γ Ⱶ l-------------------------------------- a and b using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- a and b using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- a and b using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- a and b using i )
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed a → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i

well_formed (a and b) → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed a → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed a → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed a
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed a → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed a → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed a
abstract(wf_auto2).
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed a → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: well_formed a → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
exact wfl.
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed b
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)
Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed b
abstract(wf_auto2).
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)
Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: well_formed b → Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

Pattern.wf (patterns_of l)
exact wfl.
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp (a and b) (patterns_of l) using i
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed a
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)
well_formed b
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed a
abstract (wf_auto2).
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed b
Σ: Signature
Γ: Theory
a, b: Pattern
l: hypotheses
i: ProofInfo
Ha: Γ ⊢i foldr patt_imp a (patterns_of l) using i
Hb: Γ ⊢i foldr patt_imp b (patterns_of l) using i
wfab: well_formed (a and b)
wfl: Pattern.wf (patterns_of l)

well_formed b
abstract (wf_auto2). } Defined. Ltac mlSplitAnd := apply MLGoal_splitAnd.
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern

well_formed a → well_formed b → well_formed c → Γ ⊢i a ---> b ---> c ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ ⊢i a ---> b ---> c ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

well_formed (a ---> b ---> c ---> a and b)
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
Γ Ⱶ a ---> b ---> c ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

well_formed (a ---> b ---> c ---> a and b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ a ---> b ---> c ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, -------------------------------------- b ---> c ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, -------------------------------------- c ---> a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, "H2" ∶ c, -------------------------------------- a and b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, "H2" ∶ c, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c
Γ Ⱶ "H0" ∶ a, "H1" ∶ b, "H2" ∶ c, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, "H2" ∶ c, -------------------------------------- a using BasicReasoning
mlExact "H0".
Σ: Signature
Γ: Theory
a, b, c: Pattern
wfa: well_formed a
wfb: well_formed b
wfc: well_formed c

Γ Ⱶ "H0" ∶ a, "H1" ∶ b, "H2" ∶ c, -------------------------------------- b using BasicReasoning
mlExact "H1". Defined.
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l

Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf []

Γ ⊢i g₁ <---> g₂ ---> g₁ <---> g₂ using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
Γ ⊢i (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf []

Γ ⊢i g₁ <---> g₂ ---> g₁ <---> g₂ using BasicReasoning
apply A_impl_A; wf_auto2.
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning

Γ ⊢i (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfl': Pattern.wf (a :: l)

Γ ⊢i (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfl': foldr andb true (map well_formed (a :: l))

Γ ⊢i (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfl': well_formed a && foldr andb true (map well_formed l)

Γ ⊢i (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ ⊢i (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ ⊢i (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

well_formed ((a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l))
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true
Γ Ⱶ (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

well_formed ((a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l))
wf_auto2.
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- (a ---> foldr patt_imp g₁ l) <---> (a ---> foldr patt_imp g₂ l) using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- (a ---> foldr patt_imp g₁ l) ---> a ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true
Γ Ⱶ "H0" ∶ a ---> foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- (a ---> foldr patt_imp g₂ l) ---> a ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- (a ---> foldr patt_imp g₁ l) ---> a ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- a ---> foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> a ---> foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ a ---> foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a, -------------------------------------- foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ foldr patt_imp g₁ l <---> foldr patt_imp g₂ l, -------------------------------------- foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ (foldr patt_imp g₁ l ---> foldr patt_imp g₂ l) and (foldr patt_imp g₂ l ---> foldr patt_imp g₁ l), -------------------------------------- foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H1" ∶ foldr patt_imp g₁ l ---> foldr patt_imp g₂ l, "H2" ∶ foldr patt_imp g₂ l ---> foldr patt_imp g₁ l, -------------------------------------- foldr patt_imp g₁ l ---> foldr patt_imp g₂ l using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- (a ---> foldr patt_imp g₂ l) ---> a ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a ---> foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- a ---> foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ (a ---> foldr patt_imp (g₁ <---> g₂) l) ---> a ---> foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ a ---> foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ a, -------------------------------------- foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ foldr patt_imp (g₁ <---> g₂) l, -------------------------------------- foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ foldr patt_imp g₁ l <---> foldr patt_imp g₂ l, -------------------------------------- foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H0" ∶ (foldr patt_imp g₁ l ---> foldr patt_imp g₂ l) and (foldr patt_imp g₂ l ---> foldr patt_imp g₁ l), -------------------------------------- foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
Σ: Signature
Γ: Theory
g₁, g₂, a: Pattern
l: list Pattern
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf (a :: l)
IHl: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
wfa: well_formed a = true
wfl': foldr andb true (map well_formed l) = true

Γ Ⱶ "H1" ∶ foldr patt_imp g₁ l ---> foldr patt_imp g₂ l, "H2" ∶ foldr patt_imp g₂ l ---> foldr patt_imp g₁ l, -------------------------------------- foldr patt_imp g₂ l ---> foldr patt_imp g₁ l using BasicReasoning
mlExact "H2". Defined.
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i → Γ ⊢i foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i → Γ ⊢i foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i

Γ ⊢i foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g₁ l <---> foldr patt_imp g₂ l using BasicReasoning
apply prf_local_goals_equiv_impl_full_equiv; assumption.
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i

Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
exact H. Defined.
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i → Γ ⊢i foldr patt_imp g₁ l using i → Γ ⊢i foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i → Γ ⊢i foldr patt_imp g₁ l using i → Γ ⊢i foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i

Γ ⊢i foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed ?ϕ₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed (foldr patt_imp g₂ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
Γ ⊢i ?ϕ₁ <---> foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i

Γ ⊢i foldr patt_imp ?g₁ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed (foldr patt_imp ?g₁ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed (foldr patt_imp g₂ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed ?g₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed g₂
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
Pattern.wf l
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
Γ ⊢i foldr patt_imp (?g₁ <---> g₂) l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i

Γ ⊢i foldr patt_imp g₁ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed (foldr patt_imp g₁ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed (foldr patt_imp g₂ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed g₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed g₂
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
Pattern.wf l
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i

well_formed (foldr patt_imp g₁ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed (foldr patt_imp g₂ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed g₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
well_formed g₂
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₁ l using i
Pattern.wf l
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i → Γ ⊢i foldr patt_imp g₂ l using i → Γ ⊢i foldr patt_imp g₁ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo

well_formed g₁ → well_formed g₂ → Pattern.wf l → Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i → Γ ⊢i foldr patt_imp g₂ l using i → Γ ⊢i foldr patt_imp g₁ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i

Γ ⊢i foldr patt_imp g₁ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g₁ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed (foldr patt_imp g₁ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed ?ϕ₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
Γ ⊢i foldr patt_imp g₁ l <---> ?ϕ₁ using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i

Γ ⊢i foldr patt_imp ?g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed (foldr patt_imp g₁ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed (foldr patt_imp ?g₂ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed g₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed ?g₂
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
Pattern.wf l
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
Γ ⊢i foldr patt_imp (g₁ <---> ?g₂) l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i

Γ ⊢i foldr patt_imp g₂ l using i
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed (foldr patt_imp g₁ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed (foldr patt_imp g₂ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed g₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed g₂
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
Pattern.wf l
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i

well_formed (foldr patt_imp g₁ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed (foldr patt_imp g₂ l)
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed g₁
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
well_formed g₂
Σ: Signature
Γ: Theory
g₁, g₂: Pattern
l: list Pattern
i: ProofInfo
wfg₁: well_formed g₁
wfg₂: well_formed g₂
wfl: Pattern.wf l
H1: Γ ⊢i foldr patt_imp (g₁ <---> g₂) l using i
H2: Γ ⊢i foldr patt_imp g₂ l using i
Pattern.wf l
all: wf_auto2. Defined.
Σ: Signature
Γ: Theory

Γ ⊢i Top using BasicReasoning
Σ: Signature
Γ: Theory

Γ ⊢i Top using BasicReasoning
Σ: Signature
Γ: Theory

well_formed ⊥
Σ: Signature
Γ: Theory

well_formed ⊥
wf_auto2. } Defined.
Σ: Signature
Γ: Theory
ϕ: Pattern

well_formed ϕ → Γ ⊢i ϕ <---> (ϕ <---> Top) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern

well_formed ϕ → Γ ⊢i ϕ <---> (ϕ <---> Top) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ ⊢i ϕ <---> (ϕ <---> Top) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

well_formed (ϕ <---> (ϕ <---> Top))
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ
Γ Ⱶ ϕ <---> (ϕ <---> Top) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

well_formed (ϕ <---> (ϕ <---> Top))
wf_auto2.
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ ϕ <---> (ϕ <---> Top) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ, -------------------------------------- ϕ <---> Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ
Γ Ⱶ "H0" ∶ ϕ <---> Top, -------------------------------------- ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ, -------------------------------------- ϕ <---> Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ, -------------------------------------- ϕ ---> Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ
Γ Ⱶ "H0" ∶ ϕ, -------------------------------------- Top ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ, -------------------------------------- ϕ ---> Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ, "H1" ∶ ϕ, -------------------------------------- Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ, -------------------------------------- Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ ⊢i Top using BasicReasoning
apply top_holds. (* TODO: we need something like [mlExactMeta top_holds] *)
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ, -------------------------------------- Top ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ ⊢i ϕ ---> Top ---> ϕ using BasicReasoning
apply P1; wf_auto2.
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ <---> Top, -------------------------------------- ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H1" ∶ ϕ ---> Top, "H2" ∶ Top ---> ϕ, -------------------------------------- ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H1" ∶ ϕ ---> Top, "H2" ∶ Top ---> ϕ, -------------------------------------- Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H1" ∶ ϕ ---> Top, -------------------------------------- Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ Top using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ ⊢i Top using BasicReasoning
apply top_holds. Defined.
Σ: Signature
Γ: Theory
ϕ: Pattern

well_formed ϕ → Γ ⊢i ! ϕ <---> (ϕ <---> ⊥) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern

well_formed ϕ → Γ ⊢i ! ϕ <---> (ϕ <---> ⊥) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ ⊢i ! ϕ <---> (ϕ <---> ⊥) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

well_formed (! ϕ <---> (ϕ <---> ⊥))
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ
Γ Ⱶ ! ϕ <---> (ϕ <---> ⊥) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

well_formed (! ϕ <---> (ϕ <---> ⊥))
wf_auto2.
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ ! ϕ <---> (ϕ <---> ⊥) using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ! ϕ, -------------------------------------- ϕ <---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ
Γ Ⱶ "H0" ∶ ϕ <---> ⊥, -------------------------------------- ! ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ! ϕ, -------------------------------------- ϕ <---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ! ϕ, -------------------------------------- ϕ ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ
Γ Ⱶ "H0" ∶ ! ϕ, -------------------------------------- ⊥ ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ! ϕ, -------------------------------------- ϕ ---> ⊥ using BasicReasoning
mlExact "H0".
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ! ϕ, -------------------------------------- ⊥ ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ ⊥ ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ ⊢i ⊥ ---> ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

well_formed ϕ
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

well_formed ϕ
wf_auto2. }
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H0" ∶ ϕ <---> ⊥, -------------------------------------- ! ϕ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ: Pattern
wfϕ: well_formed ϕ

Γ Ⱶ "H1" ∶ ϕ ---> ⊥, "H2" ∶ ⊥ ---> ϕ, -------------------------------------- ! ϕ using BasicReasoning
mlExact "H1". Defined.
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A <---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern

well_formed A → Γ ⊢i A <---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i A <---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
well_formed (! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
Γ ⊢i A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed A
wf_auto2.
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed (! ! A)
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
Γ ⊢i A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed (! ! A)
wf_auto2.
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A
Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i A ---> ! ! A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed A
wf_auto2. }
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

Γ ⊢i ! ! A ---> A using BasicReasoning
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed A
Σ: Signature
Γ: Theory
A: Pattern
wfA: well_formed A

well_formed A
wf_auto2. } Defined.
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i p and q <---> q and p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern

well_formed p → well_formed q → Γ ⊢i p and q <---> q and p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ ⊢i p and q <---> q and p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed (p and q <---> q and p)
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ p and q <---> q and p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

well_formed (p and q <---> q and p)
wf_auto2.
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ p and q <---> q and p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ "H1" ∶ q, "H2" ∶ p, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q
Γ Ⱶ "H1" ∶ q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- q using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- p using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H1" ∶ q, "H2" ∶ p, -------------------------------------- p using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
p, q: Pattern
wfp: well_formed p
wfq: well_formed q

Γ Ⱶ "H1" ∶ q, "H2" ∶ p, -------------------------------------- q using BasicReasoning
mlExact "H1". Defined. (* We need to come up with tactics that make this easier. *)
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern

well_formed ϕ₁ → well_formed ϕ₂ → Γ ⊢i (! ϕ₁ ---> ! ϕ₂) ---> ϕ₂ ---> ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern

well_formed ϕ₁ → well_formed ϕ₂ → Γ ⊢i (! ϕ₁ ---> ! ϕ₂) ---> ϕ₂ ---> ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

Γ ⊢i (! ϕ₁ ---> ! ϕ₂) ---> ϕ₂ ---> ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

well_formed ((! ϕ₁ ---> ! ϕ₂) ---> ϕ₂ ---> ϕ₁)
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Γ Ⱶ (! ϕ₁ ---> ! ϕ₂) ---> ϕ₂ ---> ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

well_formed ((! ϕ₁ ---> ! ϕ₂) ---> ϕ₂ ---> ϕ₁)
wf_auto2.
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

Γ Ⱶ (! ϕ₁ ---> ! ϕ₂) ---> ϕ₂ ---> ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

Γ Ⱶ "H0" ∶ ! ϕ₁ ---> ! ϕ₂, -------------------------------------- ϕ₂ ---> ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

Γ Ⱶ "H0" ∶ ! ϕ₁ ---> ! ϕ₂, "H1" ∶ ϕ₂, -------------------------------------- ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, -------------------------------------- ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, -------------------------------------- (ϕ₁ ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ (ϕ₁ ---> ⊥) ---> ⊥, -------------------------------------- ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂

well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
wf_auto2.
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, -------------------------------------- (ϕ₁ ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ (ϕ₁ ---> ⊥) ---> ⊥, -------------------------------------- ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, -------------------------------------- (ϕ₁ ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)

well_formed (ϕ₂ ---> ⊥)
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)
Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, -------------------------------------- ϕ₂ ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)
Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, "H3" ∶ ϕ₂ ---> ⊥, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)

well_formed (ϕ₂ ---> ⊥)
wf_auto2.
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, -------------------------------------- ϕ₂ ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)
Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, "H3" ∶ ϕ₂ ---> ⊥, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, -------------------------------------- ϕ₂ ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, -------------------------------------- ϕ₁ ---> ⊥ using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, "H3" ∶ ϕ₂ ---> ⊥, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)
Hwf0: well_formed (ϕ₂ ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ ϕ₁ ---> ⊥, "H3" ∶ ϕ₂ ---> ⊥, -------------------------------------- ϕ₂ using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ (ϕ₁ ---> ⊥) ---> ⊥, -------------------------------------- ϕ₁ using BasicReasoning
Σ: Signature
Γ: Theory
ϕ₁, ϕ₂: Pattern
wfϕ₁: well_formed ϕ₁
wfϕ₂: well_formed ϕ₂
Hwf: well_formed ((ϕ₁ ---> ⊥) ---> ⊥)

Γ Ⱶ "H0" ∶ (ϕ₁ ---> ⊥) ---> ϕ₂ ---> ⊥, "H1" ∶ ϕ₂, "H2" ∶ (ϕ₁ ---> ⊥) ---> ⊥, -------------------------------------- ! ! ϕ₁ using BasicReasoning
mlExact "H2". Defined.
Σ: Signature
x: Pattern
xs: list Pattern

well_formed x → Pattern.wf xs → well_formed (foldr patt_and x xs)
Σ: Signature
x: Pattern
xs: list Pattern

well_formed x → Pattern.wf xs → well_formed (foldr patt_and x xs)
Σ: Signature
x: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf xs

well_formed (foldr patt_and x xs)
Σ: Signature
x: Pattern
wfx: well_formed x
wfxs: Pattern.wf []

well_formed x
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: Pattern.wf xs → well_formed (foldr patt_and x xs)
well_formed (a and foldr patt_and x xs)
Σ: Signature
x: Pattern
wfx: well_formed x
wfxs: Pattern.wf []

well_formed x
assumption.
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: Pattern.wf xs → well_formed (foldr patt_and x xs)

well_formed (a and foldr patt_and x xs)
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: Pattern.wf xs → well_formed (foldr patt_and x xs)

Pattern.wf xs
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: well_formed (foldr patt_and x xs)
well_formed (a and foldr patt_and x xs)
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: Pattern.wf xs → well_formed (foldr patt_and x xs)

Pattern.wf xs
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: foldr andb true (map well_formed (a :: xs))
IHxs: Pattern.wf xs → well_formed (foldr patt_and x xs)

Pattern.wf xs
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: well_formed a && foldr andb true (map well_formed xs)
IHxs: Pattern.wf xs → well_formed (foldr patt_and x xs)

Pattern.wf xs
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
H: well_formed a = true
H0: foldr andb true (map well_formed xs) = true
IHxs: Pattern.wf xs → well_formed (foldr patt_and x xs)

Pattern.wf xs
assumption.
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: well_formed (foldr patt_and x xs)

well_formed (a and foldr patt_and x xs)
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: well_formed (foldr patt_and x xs)

well_formed a = true
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: well_formed (foldr patt_and x xs)
well_formed (foldr patt_and x xs) = true
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: well_formed (foldr patt_and x xs)

well_formed a = true
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: foldr andb true (map well_formed (a :: xs))
IHxs: well_formed (foldr patt_and x xs)

well_formed a = true
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: well_formed a && foldr andb true (map well_formed xs)
IHxs: well_formed (foldr patt_and x xs)

well_formed a = true
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
H: well_formed a = true
H0: foldr andb true (map well_formed xs) = true
IHxs: well_formed (foldr patt_and x xs)

well_formed a = true
assumption.
Σ: Signature
x, a: Pattern
xs: list Pattern
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: well_formed (foldr patt_and x xs)

well_formed (foldr patt_and x xs) = true
assumption. Qed.
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern

well_formed g → well_formed x → Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern

well_formed g → well_formed x → Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf xs

Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf []

Γ ⊢i (x ---> g) ---> x ---> g using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf []

Γ ⊢i (x ---> g) ---> x ---> g using BasicReasoning
Σ: Signature
Γ: Theory
g, x: Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf []

well_formed (x ---> g)
Σ: Signature
Γ: Theory
g, x: Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf []

well_formed (x ---> g)
wf_auto2. }
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf (a :: xs)
IHxs: Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: foldr andb true (map well_formed (a :: xs))
IHxs: Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfxs: well_formed a && foldr andb true (map well_formed xs)
IHxs: Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: foldr andb true (map well_formed xs) = true
IHxs: Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Pattern.wf xs → Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> foldr patt_imp g (x :: xs) using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

well_formed (foldr patt_and x xs)
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)

well_formed (foldr patt_and x xs)
apply well_formed_foldr_and; assumption.
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

Γ ⊢i (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

well_formed ((a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs)
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Γ Ⱶ (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

well_formed ((a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs)
wf_auto2.
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

Γ Ⱶ (a and foldr patt_and x xs ---> g) ---> x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, -------------------------------------- x ---> a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, -------------------------------------- a ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, -------------------------------------- (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H4" ∶ (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)

well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
wf_auto2.
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, -------------------------------------- (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H4" ∶ (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, -------------------------------------- (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

well_formed (x ---> foldr patt_imp g xs)
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)
Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, -------------------------------------- x ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)
Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, "H6" ∶ x ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

well_formed (x ---> foldr patt_imp g xs)
wf_auto2.
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, -------------------------------------- x ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)
Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, "H6" ∶ x ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, -------------------------------------- x ---> foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, -------------------------------------- foldr patt_and x xs ---> g using BasicReasoning
mlExact "H5".
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, "H6" ∶ x ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, "H6" ∶ x ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Hwf0: well_formed (x ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H1" ∶ x, "H2" ∶ a, "H5" ∶ foldr patt_and x xs ---> g, "H6" ∶ x ---> foldr patt_imp g xs, -------------------------------------- x using BasicReasoning
mlExact "H1".
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H3" ∶ (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs, "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H4" ∶ (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H4" ∶ (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs, -------------------------------------- foldr patt_imp g xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H4" ∶ (foldr patt_and x xs ---> g) ---> foldr patt_imp g xs, -------------------------------------- foldr patt_and x xs ---> g using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, -------------------------------------- foldr patt_and x xs ---> g using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H3" ∶ foldr patt_and x xs, -------------------------------------- g using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H3" ∶ foldr patt_and x xs, -------------------------------------- a and foldr patt_and x xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H3" ∶ foldr patt_and x xs, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)
Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H3" ∶ foldr patt_and x xs, -------------------------------------- foldr patt_and x xs using BasicReasoning
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H3" ∶ foldr patt_and x xs, -------------------------------------- a using BasicReasoning
mlExact "H2".
Σ: Signature
Γ: Theory
g, x, a: Pattern
xs: list Pattern
wfg: well_formed g
wfx: well_formed x
wfa: well_formed a = true
wfxs: Pattern.wf xs = true
IHxs: Γ ⊢i (foldr patt_and x xs ---> g) ---> x ---> foldr patt_imp g xs using BasicReasoning
wfaxs: Pattern.wf (a :: xs)
Hwffa: well_formed (foldr patt_and x xs)
Hwf: well_formed ((foldr patt_and x xs ---> g) ---> foldr patt_imp g xs)

Γ Ⱶ "H0" ∶ a and foldr patt_and x xs ---> g, "H1" ∶ x, "H2" ∶ a, "H3" ∶ foldr patt_and x xs, -------------------------------------- foldr patt_and x xs using BasicReasoning
mlExact "H3". Defined.
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo

well_formed g → well_formed x → Pattern.wf xs → Γ ⊢i foldr patt_and x xs ---> g using i → Γ ⊢i foldr patt_imp g (x :: xs) using i
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo

well_formed g → well_formed x → Pattern.wf xs → Γ ⊢i foldr patt_and x xs ---> g using i → Γ ⊢i foldr patt_imp g (x :: xs) using i
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf xs
H: Γ ⊢i foldr patt_and x xs ---> g using i

Γ ⊢i foldr patt_imp g (x :: xs) using i
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf xs
H: Γ ⊢i foldr patt_and x xs ---> g using i

Γ ⊢i ?ϕ₁ using i
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf xs
H: Γ ⊢i foldr patt_and x xs ---> g using i
Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (x :: xs) using i
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf xs
H: Γ ⊢i foldr patt_and x xs ---> g using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (x :: xs) using i
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf xs
H: Γ ⊢i foldr patt_and x xs ---> g using i

Γ ⊢i ?ϕ₁ ---> foldr patt_imp g (x :: xs) using BasicReasoning
apply lhs_and_to_imp; assumption.
Σ: Signature
Γ: Theory
g, x: Pattern
xs: list Pattern
i: ProofInfo
wfg: well_formed g
wfx: well_formed x
wfxs: Pattern.wf xs
H: Γ ⊢i foldr patt_and x xs ---> g using i

Γ ⊢i foldr patt_and x xs ---> g using i
exact H. Defined. #[local] Ltac tryExact l idx := match l with | nil => idtac | (?a :: ?m) => try mlExactn idx; tryExact m (idx + 1) end. #[global] Ltac mlAssumption := match goal with | [ |- @of_MLGoal ?Sgm (@mkMLGoal ?Sgm ?Ctx ?l ?g ?i) ] => tryExact l 0 end.
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i (a ---> b) <---> ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i (a ---> b) <---> ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i (a ---> b) <---> ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed ((a ---> b) <---> ! a or b)
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ (a ---> b) <---> ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed ((a ---> b) <---> ! a or b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ (a ---> b) <---> ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! ((a ---> b) ---> ! a or b) or ! (! a or b ---> a ---> b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! ((a ---> b) ---> ! a or b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H2" ∶ ! (! a or b ---> a ---> b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! ((a ---> b) ---> ! a or b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ((a ---> b) ---> ! a or b) ---> ⊥, -------------------------------------- (a ---> b) ---> ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ((a ---> b) ---> ! a or b) ---> ⊥, "H2" ∶ a ---> b, -------------------------------------- ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ a ---> b, -------------------------------------- ! a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ a ---> b, "H1" ∶ ! ! a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ a ---> b, "H1" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ a ---> b, "H1" ∶ a, -------------------------------------- a using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! (! a or b ---> a ---> b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (! a or b ---> a ---> b) ---> ⊥, -------------------------------------- ! a or b ---> a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (! a or b ---> a ---> b) ---> ⊥, "H0" ∶ ! a or b, -------------------------------------- a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! a or b, -------------------------------------- a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! a or b, "H1" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H1" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H3" ∶ b, "H1" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H1" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H1" ∶ a, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ a ---> ⊥, "H1" ∶ a, -------------------------------------- a using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H3" ∶ b, "H1" ∶ a, -------------------------------------- b using BasicReasoning
mlAssumption. Defined.
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i ! (a ---> b) <---> a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i ! (a ---> b) <---> a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i ! (a ---> b) <---> a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (! (a ---> b) <---> a and ! b)
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ ! (a ---> b) <---> a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (! (a ---> b) <---> a and ! b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (a ---> b) <---> a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! (! (a ---> b) ---> a and ! b) or ! (a and ! b ---> ! (a ---> b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! (! (a ---> b) ---> a and ! b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H2" ∶ ! (a and ! b ---> ! (a ---> b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! (! (a ---> b) ---> a and ! b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> a and ! b) ---> ⊥, -------------------------------------- ! (a ---> b) ---> a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> a and ! b) ---> ⊥, "H0" ∶ ! (a ---> b), -------------------------------------- a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ ! (a ---> b), -------------------------------------- ! (! a or ! ! b) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ ! (a ---> b), "H2" ∶ ! a or ! ! b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H2" ∶ ! a or ! ! b, -------------------------------------- a ---> b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H2" ∶ ! a or ! ! b, "H3" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H4" ∶ ! a, "H3" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H5" ∶ ! ! b, "H3" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H4" ∶ ! a, "H3" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H4" ∶ ! a, "H3" ∶ a, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H4" ∶ a ---> ⊥, "H3" ∶ a, -------------------------------------- a using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H5" ∶ ! ! b, "H3" ∶ a, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ (! (a ---> b) ---> ! (! a or ! ! b)) ---> ⊥, "H0" ∶ (a ---> b) ---> ⊥, "H5" ∶ b, "H3" ∶ a, -------------------------------------- b using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! (a and ! b ---> ! (a ---> b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (a and ! b ---> ! (a ---> b)) ---> ⊥, -------------------------------------- a and ! b ---> ! (a ---> b) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (a and ! b ---> ! (a ---> b)) ---> ⊥, "H0" ∶ a and ! b, -------------------------------------- ! (a ---> b) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (a and ! b ---> ! (a ---> b)) ---> ⊥, "H0" ∶ a and ! b, "H1" ∶ a ---> b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (a and ! b ---> ! (a ---> b)) ---> ⊥, "H3" ∶ a, "H4" ∶ ! b, "H1" ∶ a ---> b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (a and ! b ---> ! (a ---> b)) ---> ⊥, "H3" ∶ a, "H4" ∶ b ---> ⊥, "H1" ∶ a ---> b, -------------------------------------- b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ (a and ! b ---> ! (a ---> b)) ---> ⊥, "H3" ∶ a, "H4" ∶ b ---> ⊥, "H1" ∶ a ---> b, -------------------------------------- a using BasicReasoning
mlAssumption. Defined.
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i ! (a and b) <---> ! a or ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i ! (a and b) <---> ! a or ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i ! (a and b) <---> ! a or ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (! (a and b) <---> ! a or ! b)
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ ! (a and b) <---> ! a or ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (! (a and b) <---> ! a or ! b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (a and b) <---> ! a or ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! (! (a and b) ---> ! a or ! b) or ! (! a or ! b ---> ! (a and b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! (! (a and b) ---> ! a or ! b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H2" ∶ ! (! a or ! b ---> ! (a and b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! (! (a and b) ---> ! a or ! b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (! (a and b) ---> ! a or ! b) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (a and b) ---> ! a or ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! (a and b), -------------------------------------- ! a or ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! a or ! b, -------------------------------------- ! a or ! b using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! (! a or ! b ---> ! (a and b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (! a or ! b ---> ! (a and b)) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! a or ! b ---> ! (a and b) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! a or ! b, -------------------------------------- ! (a and b) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! a or ! b, -------------------------------------- ! a or ! b using BasicReasoning
mlAssumption. Defined.
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i ! (a or b) <---> ! a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern

well_formed a → well_formed b → Γ ⊢i ! (a or b) <---> ! a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ ⊢i ! (a or b) <---> ! a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (! (a or b) <---> ! a and ! b)
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ ! (a or b) <---> ! a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

well_formed (! (a or b) <---> ! a and ! b)
wf_auto2.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (a or b) <---> ! a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! (! (a or b) ---> ! a and ! b) or ! (! a and ! b ---> ! (a or b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! (! (a or b) ---> ! a and ! b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H2" ∶ ! (! a and ! b ---> ! (a or b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H1" ∶ ! (! (a or b) ---> ! a and ! b), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (! (a or b) ---> ! a and ! b) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (a or b) ---> ! a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! (a or b), -------------------------------------- ! a and ! b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! (a or b), "H1" ∶ ! ! a or ! ! b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H1" ∶ ! ! a or ! ! b, -------------------------------------- a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H2" ∶ ! ! a, -------------------------------------- a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H3" ∶ ! ! b, -------------------------------------- a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H2" ∶ ! ! a, -------------------------------------- a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H2" ∶ a, -------------------------------------- a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H2" ∶ a, -------------------------------------- a using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H3" ∶ ! ! b, -------------------------------------- a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H3" ∶ b, -------------------------------------- a or b using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ a or b ---> ⊥, "H3" ∶ b, -------------------------------------- b using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! (! a and ! b ---> ! (a or b)), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! (! a and ! b ---> ! (a or b)) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ ! a and ! b ---> ! (a or b) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! a and ! b, -------------------------------------- ! (a or b) using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H0" ∶ ! a and ! b, "H1" ∶ a or b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H3" ∶ ! b, "H1" ∶ a or b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H3" ∶ ! b, "H4" ∶ a, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b
Γ Ⱶ "H2" ∶ ! a, "H3" ∶ ! b, "H5" ∶ b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H3" ∶ ! b, "H4" ∶ a, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ a ---> ⊥, "H3" ∶ ! b, "H4" ∶ a, -------------------------------------- a using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H3" ∶ ! b, "H5" ∶ b, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a, b: Pattern
wfa: well_formed a
wfb: well_formed b

Γ Ⱶ "H2" ∶ ! a, "H3" ∶ b ---> ⊥, "H5" ∶ b, -------------------------------------- b using BasicReasoning
mlAssumption. Defined.
Σ: Signature
Γ: Theory
a: Pattern

well_formed a → Γ ⊢i ! ! a <---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern

well_formed a → Γ ⊢i ! ! a <---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ ⊢i ! ! a <---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed (! ! a <---> a)
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a
Γ Ⱶ ! ! a <---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

well_formed (! ! a <---> a)
wf_auto2.
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ ! ! a <---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H0" ∶ ! (! ! a ---> a) or ! (a ---> ! ! a), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H1" ∶ ! (! ! a ---> a), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a
Γ Ⱶ "H2" ∶ ! (a ---> ! ! a), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H1" ∶ ! (! ! a ---> a), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H1" ∶ (! ! a ---> a) ---> ⊥, -------------------------------------- ! ! a ---> a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H1" ∶ (! ! a ---> a) ---> ⊥, "H0" ∶ ! ! a, -------------------------------------- a using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H1" ∶ (! ! a ---> a) ---> ⊥, "H0" ∶ a, -------------------------------------- a using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H2" ∶ ! (a ---> ! ! a), -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H2" ∶ (a ---> (a ---> ⊥) ---> ⊥) ---> ⊥, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H2" ∶ (a ---> (a ---> ⊥) ---> ⊥) ---> ⊥, -------------------------------------- a ---> (a ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H2" ∶ (a ---> (a ---> ⊥) ---> ⊥) ---> ⊥, "H0" ∶ a, -------------------------------------- (a ---> ⊥) ---> ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H2" ∶ (a ---> (a ---> ⊥) ---> ⊥) ---> ⊥, "H0" ∶ a, "H1" ∶ a ---> ⊥, -------------------------------------- ⊥ using BasicReasoning
Σ: Signature
Γ: Theory
a: Pattern
wfa: well_formed a

Γ Ⱶ "H2" ∶ (a ---> (a ---> ⊥) ---> ⊥) ---> ⊥, "H0" ∶ a, "H1" ∶ a ---> ⊥, -------------------------------------- a using BasicReasoning
mlAssumption. Defined.
Σ: Signature

(Γ : Theory) (p : Pattern), well_formed p → Γ ⊢i p and p <---> p using BasicReasoning
Σ: Signature

(Γ : Theory) (p : Pattern), well_formed p → Γ ⊢i p and p <---> p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p

Γ ⊢i p and p <---> p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p

well_formed (p and p <---> p)
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p
Γ Ⱶ p and p <---> p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p

Γ Ⱶ p and p <---> p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p

Γ Ⱶ "H" ∶ p and p, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p
Γ Ⱶ "H" ∶ p, -------------------------------------- p and p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p

Γ Ⱶ "H" ∶ p and p, -------------------------------------- p using BasicReasoning
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p

Γ Ⱶ "0" ∶ p, "1" ∶ p, -------------------------------------- p using BasicReasoning
mlAssumption.
Σ: Signature
Γ: Theory
p: Pattern
WFp: well_formed p

Γ Ⱶ "H" ∶ p, -------------------------------------- p and p using BasicReasoning
mlSplitAnd; mlAssumption. Defined.
Σ: Signature

(Γ : Theory) (l : hypotheses) (g : Pattern) (i : ProofInfo), Γ ⊢i g using i → Γ Ⱶ l-------------------------------------- g using i
Σ: Signature

(Γ : Theory) (l : hypotheses) (g : Pattern) (i : ProofInfo), Γ ⊢i g using i → Γ Ⱶ l-------------------------------------- g using i
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g using i ))
wfl: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i )))

mlTheory (Γ Ⱶ l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i )
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed (mlConclusion (Γ Ⱶ l-------------------------------------- g using i ))
wfl: Pattern.wf (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i )))

mlTheory (Γ Ⱶ l-------------------------------------- g using i ) ⊢i foldr patt_imp (mlConclusion (Γ Ⱶ l-------------------------------------- g using i )) (patterns_of (mlHypotheses (Γ Ⱶ l-------------------------------------- g using i ))) using mlInfo (Γ Ⱶ l-------------------------------------- g using i )
Σ: Signature
Γ: Theory
l: hypotheses
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed g
wfl: Pattern.wf (patterns_of l)

Γ ⊢i foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
a: named_hypothesis
l: list named_hypothesis
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed g
wfl: Pattern.wf (patterns_of (a :: l))
IHl: Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i

Γ ⊢i nh_patt a ---> foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
a: named_hypothesis
l: list named_hypothesis
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed g
wfl: Pattern.wf (nh_patt a :: patterns_of l)
IHl: Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i

Γ ⊢i nh_patt a ---> foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
a: named_hypothesis
l: list named_hypothesis
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed g
wfl: Pattern.wf (nh_patt a :: patterns_of l)
IHl: Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfl': Pattern.wf (patterns_of l) = true

Γ ⊢i nh_patt a ---> foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
a: named_hypothesis
l: list named_hypothesis
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed g
wfl: well_formed (nh_patt a) && foldr andb true (map well_formed (patterns_of l))
IHl: Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfl': Pattern.wf (patterns_of l) = true

Γ ⊢i nh_patt a ---> foldr patt_imp g (patterns_of l) using i
Σ: Signature
Γ: Theory
a: named_hypothesis
l: list named_hypothesis
g: Pattern
i: ProofInfo
pf: Γ ⊢i g using i
wfG: well_formed g
wfl: well_formed (nh_patt a) = true
IHl: Pattern.wf (patterns_of l) → Γ ⊢i foldr patt_imp g (patterns_of l) using i
wfl': Pattern.wf (patterns_of l) = true

Γ ⊢i nh_patt a ---> foldr patt_imp g (patterns_of l) using i
apply prf_conclusion; wf_auto2. Defined. Tactic Notation "mlExactMeta" uconstr(t) := apply (@MLGoal_ExactMeta _ _ _ _ _ t).

(Σ : Signature) (Γ : Theory), Γ ⊢i Top using BasicReasoning

(Σ : Signature) (Γ : Theory), Γ ⊢i Top using BasicReasoning
Σ: Signature
Γ: Theory

Γ ⊢i Top using BasicReasoning
Σ: Signature
Γ: Theory

well_formed Top
Σ: Signature
Γ: Theory
Γ Ⱶ Top using BasicReasoning
Σ: Signature
Γ: Theory

Γ Ⱶ Top using BasicReasoning
mlExactMeta (top_holds Γ). Defined. (**********************************************************************************) (* This is an example and belongs to the end of this file. Its only purpose is only to show as many tactics as possible.\ *)
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p <---> p' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p <---> p' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q <---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q <---> q' using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p and q <---> p' and q')
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p and q <---> p' and q')
wf_auto2.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p and q <---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ (p and q ---> p' and q') and (p' and q' ---> p and q) using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p and q ---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p' and q' ---> p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p and q ---> p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p and q, -------------------------------------- p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- p' and q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- p using i
mlExactn 0.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, "H2" ∶ q, -------------------------------------- q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, "H2" ∶ q', -------------------------------------- q' using i
mlExact "H2".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p' and q' ---> p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', -------------------------------------- p and q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', -------------------------------------- ! (! p or ! q) using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', -------------------------------------- ! p or ! q ---> ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', "H1" ∶ ! p or ! q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', "H2" ∶ ! p, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H0" ∶ p' and q', "H3" ∶ ! q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', "H2" ∶ ! p, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H3" ∶ p', "H4" ∶ q', "H2" ∶ ! p, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H3" ∶ p', "H4" ∶ q', "H2" ∶ p ---> ⊥, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H3" ∶ p', "H4" ∶ q', "H2" ∶ p ---> ⊥, -------------------------------------- p using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H3" ∶ p', "H4" ∶ q', -------------------------------------- p using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H3" ∶ p', -------------------------------------- p using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p' ---> p using i
exact p'ip.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' and q', "H3" ∶ ! q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ q' ---> q, "H0" ∶ p' and q', "H3" ∶ ! q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed q
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q
Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, -------------------------------------- q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q
Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, "Hq" ∶ q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed q
wf_auto2.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q

Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, -------------------------------------- q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q
Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, "Hq" ∶ q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q

Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, -------------------------------------- q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q

Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, -------------------------------------- q' using i
mlExact "H4".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q

Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ ! q, "Hq" ∶ q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q

Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ q ---> ⊥, "Hq" ∶ q, -------------------------------------- ⊥ using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Hwf: well_formed q

Γ Ⱶ "H1" ∶ q' ---> q, "H2" ∶ p', "H4" ∶ q', "H3" ∶ q ---> ⊥, "Hq" ∶ q, -------------------------------------- q using i
mlAssumption. Defined.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo

well_formed p → well_formed q → well_formed p' → well_formed q' → Γ ⊢i p <---> p' using i → Γ ⊢i q <---> q' using i → Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p <---> p' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p <---> p' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q <---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q <---> q' using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ ⊢i p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p or q <---> p' or q')
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

well_formed (p or q <---> p' or q')
wf_auto2.
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p or q <---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ (p or q ---> p' or q') and (p' or q' ---> p or q) using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p or q ---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ p' or q' ---> p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p or q ---> p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p or q, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H2" ∶ q, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, -------------------------------------- p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H2" ∶ q, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, -------------------------------------- p' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p, -------------------------------------- p using i
mlExact "H1".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q, -------------------------------------- p' or q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q, -------------------------------------- q' using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q, -------------------------------------- q using i
mlExact "H2".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ p' or q' ---> p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H0" ∶ p' or q', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H2" ∶ q', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p', -------------------------------------- p using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i
Γ Ⱶ "H2" ∶ q', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p', -------------------------------------- p using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H1" ∶ p', -------------------------------------- p' using i
mlExact "H1".
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q', -------------------------------------- p or q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q', -------------------------------------- q using i
Σ: Signature
Γ: Theory
p, q, p', q': Pattern
i: ProofInfo
wfp: well_formed p
wfq: well_formed q
wfp': well_formed p'
wfq': well_formed q'
pep': Γ ⊢i p <---> p' using i
qeq': Γ ⊢i q <---> q' using i
pip': Γ ⊢i p ---> p' using i
p'ip: Γ ⊢i p' ---> p using i
qiq': Γ ⊢i q ---> q' using i
q'iq: Γ ⊢i q' ---> q using i

Γ Ⱶ "H2" ∶ q', -------------------------------------- q' using i
mlExact "H2". Defined.